c:如果标签在true的情况下无法正常工作

时间:2014-12-02 11:43:50

标签: java-ee jstl

我尝试使用c:if标签但是在真实情况下它没有显示任何内容。当if条件为真时,我该怎么做才能显示任何文本。 这是我的xhtml代码

<html>
  <body>

    <c:if test="#{fileMB.per.getFirstName()}='gul'}" >
        <h:outputLabel for="user" value="#{logMB.userExists.getFirstName()}"/>
    </c:if>

  </body>
</html>

per是登录人员的范围变量...

2 个答案:

答案 0 :(得分:0)

您需要在JSTL标签内保留您的条件。

<c:if test="${salary > 2000}"> <p>My salary is: <c:out value="${salary}"/><p> </c:if>

http://www.tutorialspoint.com/jsp/jstl_core_if_tag.htm

中查看详情

你的条件中没有开放标记的close}标签,#而不是$,你应该用双等于==

比较字符串

JSTL if tag for equal strings

中查看详情

答案 1 :(得分:0)

您的代码出了问题:

  1. 您正在使用赋值运算符而不是比较运算符。更不用说你真的不应该使用带有字符串的比较运算符。所以你的比较应该改为

    #{fileMB.per.getFirstName().equals('gul')}} 
    
  2. 你不应该使用带有facelets的JSTL标签,除非你完全确定你正在做什么。阅读this post并将您的代码更改为

    <h:outputLabel for="user" rendered="#{fileMB.per.getFirstName().equals('gul')}}" value="#{logMB.userExists.getFirstName()}"/>
    
  3. 当然,这种方法的整体有效性仍然取决于选择正确的bean范围(阅读:@ViewScoped

    <强>读取