我有三个值,我希望在前两个值的情况下渲染一个组件,为第三个值渲染另一个组件
page.xhtml
<ui:repeat value=#{bean.value} var="data"> <c:choose> <c:when test="#{data.thirdValue == 'content'}"> <h:outputText value="Wrong value"/> </c:when> <c:otherwise> Correct! </c:otherwise> </c:choose> </ui:repeat>
这就是我的页面定义方式.我还添加了以下命名空间:xmlns:c =“http://java.sun.com/jsp/jstl/core.
我测试了测试中的值是否为< c:when>返回“true”或“false”,确实如此.
我的问题是< c:when>永远不会被评估. < c:否则>值始终呈现.我错过了什么吗?是因为条件渲染在< ui:repeat>内了什么时候不评估?
任何帮助将非常感谢.提前致谢
解决方法
你需要删除c:choose,因为正如@Jens在评论中所述,它们是在不同的阶段处理的.您可以将JSTL与JSF结合使用,但必须遵守它们的解决顺序.阅读BalusC的精美答案,他摇滚.
根据您的需要,您可以使用rendered attribute来有条件地输出文本:
<ui:repeat value="#{bean.value}" var="data"> <h:outputText rendered="#{data.thirdValue == 'content'}" value="Wrong value"/> <h:outputText rendered="#{data.thirdValue != 'content'}" value="Correct!"/> </ui:repeat>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。