2012-09-20 63 views
0
<sec:authorize ifAnyGranted="<%=dRoles%>"> 
    <meta http-equiv="REFRESH" content="0;url=public/First.jsp"> 
</sec:authorize> 

<sec:authorize ifAnyGranted="<%=aRoles%>">  
     <meta http-equiv="REFRESH" content="0;url=public/Second.jsp"> 
</sec:authorize> 

<sec:authorize ifAnyGranted="<%=bRoles%>"> 
    <meta http-equiv="REFRESH" content="0;url=public/Third.jsp"> 
</sec:authorize> 

我使用彈簧安全。 登錄成功後,加載了Startup.jsp(default-target-url =「/ Startup.jsp)我在Startup.jsp中有上面的代碼,我使用的是spring安全標籤,考慮到用戶可以訪問所有上述3層的JSP。問題是,在IE7,First.jsp被加載,但在其他瀏覽器Third.jsp加載。 如何顯示在這兩種瀏覽器相同的JSP?在不同的瀏覽器中加載相同的jsp?

謝謝!

+0

'含量= 「0; URL =公/ Second.jsp」>'更改是0至1000 (或者一個足夠長的數字)拉起渲染頁面的源代碼,使其在問題瀏覽器中呈現。 –

回答

0

我猜你正處於用戶角色爲dRoles並且角色爲bRoles的情況,並且您的代碼因此會向瀏覽器發送兩個不同的元刷新。

首先,不要使用元刷新,而是使用真正的重定向或轉發(並且這不應該在JSP中完成,而應該在控制器,過濾器或servlet中完成)。

如果你真的想留下來與JSP的解決方案,我想這樣的事情應該工作:

<c:set var="refreshSent" value="${false}"/> 

<sec:authorize ifAnyGranted="<%=dRoles%>"> 
    <meta http-equiv="REFRESH" content="0;url=public/First.jsp"> 
    <c:set var="refreshSent" value="${true}"/> 
</sec:authorize> 

<sec:authorize ifAnyGranted="<%=aRoles%>"> 
    <c:if test="${!refreshSent}">  
     <meta http-equiv="REFRESH" content="0;url=public/Second.jsp"> 
     <c:set var="refreshSent" value="${true}"/> 
    </c:if> 
</sec:authorize> 

<sec:authorize ifAnyGranted="<%=bRoles%>"> 
    <c:if test="${!refreshSent}"> 
     <meta http-equiv="REFRESH" content="0;url=public/Third.jsp"> 
     <c:set var="refreshSent" value="${true}"/> 
    </c:if> 
</sec:authorize> 
+0

@Nizet,非常感謝您的解決方案。有效。 – user1016403

相關問題