如果条件在JSTL中不起作用

时间:2017-07-25 11:52:08

标签: java jstl

我正在尝试使用2如果条件设置两个变量,但它不起作用。 我的代码段如下:

<c:forEach items="${user.roles}" var="role">    

        <span>Value : ${role.id }</span> **<!-- Print the value perfectly-->**

        <c:if test="${role.id  == 3}"> 
            <c:set var="admin" value="${role.id}"></c:set>  
            <span>Value : ${val }</span>
        </c:if>             

        <c:if test="${role.id  == 2}">   **<!-- But not work condition here -->**
            <c:set var="supporter" value="${role.id}"></c:set>  
                <span>Value : ${val }</span>                        
        </c:if>
</c:forEach>

<input type="checkbox" name="roles" value="3" ${admin ==3 ? 'checked' : ''}> Supporter
<input type="checkbox" name="roles" value="2" ${supporter ==2 ? 'checked' : ''}> Admin

添加了标签Lib:

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

3 个答案:

答案 0 :(得分:2)

如果条件更改此行,则使用错误的语法

<c:if test="${$rold.id == 3}"><c:if test="${role.id == 3}">

我认为它适合你

答案 1 :(得分:1)

尝试:

<c:forEach items="${user.roles}" var="role">    

        <span>Value : ${role.id }</span> **<!-- Print the value perfectly-->**

        <c:if test="${rold.id  == 3}"> 
            <c:set var="admin" value="${role.id}"></c:set>  
            <span>Value : ${val }</span>
        </c:if>             

        <c:if test="${role.id  == 2}">   **<!-- But not work condition here -->**
            <c:set var="supporter" value="${role.id}"></c:set>  
                <span>Value : ${val }</span>                        
        </c:if>
</c:forEach>

附注:比较将在${...}内进行评估。您不需要额外的$

答案 2 :(得分:1)

首先,我想这必须是role.id而不是rold.id:

<c:if test="${$rold.id  == 3}">

此外,您的角色调用必须使用单个“$”符号,如下所示:

test="${role.id == 3}"

test="${role.id eq 3}"

在这里,您可以找到更多相关信息: http://www.javatips.net/blog/jstl-check-equals-not-equals