2016-07-10 74 views
-2

我在尋找一個很好的例子,我如何用spring標籤替換這個java代碼。用spring標籤替換特定scriptlet

<div> 
    <% 
     Object user = (String) request.getSession().getAttribute("User"); 
     Object role = (String) request.getSession().getAttribute("role"); 
     if(user == null) { 
      out.println("<a href=\"register.jsp\">Register</a><a href=\"login.jsp\">Login</a>"); 
     } else { 
      out.println(" Hello " + user + " " + "<a href=\"LogoutServlet\" >Logout</a>"); 
     } 
    %> 
</div> 
<div class="menu"> 
    <% 
     if (role != null) { 
      if(role.equals("admin")) { 
       out.println("<a href=\"adminPanel.jsp\">Admin Panel</a></br>"); 
       out.println("<a href=\"userOrders\">Orders</a></br>"); 
      } 
     } else { 
      if(user != null) 
       out.println("<a href=\"userOrders\">Orders</a></br></br>"); 
     } 
    %> 
</div> 

回答

2

對於這個特殊的例子,核心JSTL標籤就足夠了。但是,請確保這個奇怪的條件流程符合您的期望。

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

<c:choose> 
    <c:when test="${empty sessionScope.User}"> 
     <a href='register.jsp'>Register</a> 
     <a href='login.jsp'>Login</a> 
    </c:when> 
    <c:otherwise> 
     Hello <c:out value="sessionScope.User"/> 
     <a href='LogoutServlet'>Logout</a> 
    </c:otherwise> 
</c:choose> 
<div class="menu"> 
    <c:choose> 
     <c:when test="${not empty sessionScope.role}"> 
      <c:if test="${sessionScope.role eq 'admin'}"> 
       <a href='adminPanel.jsp'>Admin Panel</a></br> 
       <a href='userOrders'>Orders</a></br> 
      </c:if> 
     </c:when> 
     <c:otherwise> 
      <c:if test="${not empty sessionScope.User}"> 
       <a href='userOrders'>Orders</a></br></br> 
      </c:if> 
     </c:otherwise> 
    </c:choose> 
</div> 

請注意:${not empty sessionScope.role}將評估爲false空字符串的情況下。如果這不是所需的行爲,請使用${sessionScope.role != null}

如果你考慮在你的項目中使用Spring Security,編寫類似的東西將會更容易和更好用Spring Security taglib

+1

當您應該使用'$ {empty sessionScope.User}'時,您正在使用'$ {not empty sessionScope.User}',並且您沒有關閉第二個

+0

感謝您指出錯別字。固定。 – Constantine