我正在寻找好的例子,如何用spring标签替换这个java代码。
<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>
答案 0 :(得分: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编写类似内容会更容易,更好。