【问题标题】:Replacing particular scriptlet with spring tags用 spring 标签替换特定的 scriptlet
【发布时间】:2016-07-10 09:24:12
【问题描述】:

我正在寻找一个很好的例子,我怎样才能用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>

【问题讨论】:

    标签: java spring jsp


    【解决方案1】:

    对于这个特定的示例,核心 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 编写类似的东西会更容易和更好。

    【讨论】:

    • 你使用的是${not empty sessionScope.User},而你应该使用${empty sessionScope.User},但你没有关闭第二个&lt;c:when标签。
    猜你喜欢
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多