【问题标题】:how to test multiple conditions in <c:if> jstl如何在 <c:if> jstl 中测试多个条件
【发布时间】:2018-01-02 20:57:01
【问题描述】:

我想检查&lt;c:if&gt; 标签内的多个条件。 我就是这样做的

<c:if test="${role ne manager || role ne admin || role ne moderator}">
  System.out.println("this result will not display for manager, admin & mod");
</c:if>

但是,我仍然可以看到上述角色的结果

【问题讨论】:

  • 如果你有一个单一的语句,它工作吗? role ne manager || role ne admin || role ne moderator 看起来不像是正确的陈述
  • @ByeBye 是的,只有第一个语句在这里工作
  • 如果nenot 你必须使用&amp;&amp; 而不是||
  • 你有答案吗?

标签: java jsp jstl


【解决方案1】:

问题在于这里的布尔逻辑:

<c:if test=${role ne manager || role ne admin || role ne moderator}>

如果用户是 MANAGER,这将是: 0 OR 1 OR 1 = 1 ADMIN 和 MODERATOR 相同

所以你要改成AND

<c:if test=${role ne manager && role ne admin && role ne moderator}>

只有当用户没有任何指定的角色时才会显示消息。

【讨论】:

    【解决方案2】:

    您可以使用&lt;c:if&gt;&lt;c:choose&gt;标签在jsp中使用JSTL进行条件渲染。

    要模拟 if ,您可以使用:

    <c:if test="YourCondition"></c:if>
    

    要模拟if...else,您可以使用:

    <c:choose>
        <c:when test="${param.enter=='1'}">
            burger. 
            <br />
        </c:when>    
        <c:otherwise>
            pizza. 
            <br />
        </c:otherwise>
    </c:choose>
    

    如果你只是想输出不同的文本,一个更简洁的例子是

    ${condition ? "some text when true" : "some text when false"}
    

    它比 c:choose 短得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      • 2012-01-11
      • 2012-12-13
      • 2014-03-06
      • 1970-01-01
      相关资源
      最近更新 更多