2017-02-20 78 views
1

如何阻止一个jsp页面 (我想要的是,当我点击链接重定向每个页面时,我想阻止特定用户的某些特定页面) 我创建了一个Java脚本函数来检索每个用户的jsp页面(用户可以访问的页面)。但我不知道要阻止同一用户的其他页面)使用javascript阻止jsp页面

+0

解决方案是否必须位于[tag:jsp]中,还是只有在[tag:javascript]中才接受? – user7393973

+0

我更喜欢这些语言 –

+0

查看我的答案,并让我知道它是否有帮助。 – user7393973

回答

2

用JS的document.getElementById(“链接的ID名称”)的style.display =“无”。从页面中删除链接,并使用'块'而不是'无'来显示链接。

+0

它首先禁用所有链接,然后启用用户可以访问的适当链接。 –

3

您可以使用event.preventDefault();,并有一个变量说明用户是否应该被阻止。检查下面的例子:

var BlockUser = true; 
 
function CheckUser() { 
 
    if (BlockUser) { 
 
    event.preventDefault(); 
 
    } 
 
}
<a href="http://stackoverflow.com/">Link for any user</a> 
 
<br> 
 
<a href="http://stackoverflow.com/" onclick="CheckUser()">Link for certain users</a>

+0

这很有帮助。我通过在第一次禁用所有链接然后为每个用户激活适当的链接来做到这一点。 –

2

纯JSP溶液:

假设你有可用的链接的数组:List<String> links,你在相同的名称传递给请求(或你可以从用户检索它,没关系,假设你有这些链接阵列尽管获得它的方式),那么你可以做这样的事情:

... 
    <c:forEach var="link" items="${links}"> 
    <a href="${link}" <c:if test="/*here you test if user have 
access, i dont know how you do it*/"> class="inactiveLink" </c:if>>page link</a> 
    </c:forEach> 
    ... 

哪里...是你的JSP的休息,并定义样式

.inactiveLink { 
    pointer-events: none; 
    cursor: default; 
} 

注意,为了使用的foreach - 你应该在你的JSP的顶部定义JSTL的taglib:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

万一你不know what is jstl,什么是EL一般

一个很好的概念是关于禁用css和js,如果你想他们t Ø完全无法访问,你可以打印只允许链接:

... 
<c:forEach var="link" items="${links}"> 
<c:if test="/*here you test if user have 
    access, i dont know how you do it*/"> 
     <a href="${link}">page link</a> 
</c:if> 
</c:forEach> 
... 
+0

使用属性'pointer-events'是一个原始的想法。即使困难,禁用CSS也非常容易,我会对我的JavaScript说同样的话。 – user7393973