2017-02-20 55 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