在我的问题中,我必须根据条件显示h:panelGroup
。对于此h:panelGroup
,已设置rendered
属性。
<h:panelGroup rendered="#{not empty program.categories}">
<li>
<strong>Category: </strong>
<h:outputLabel value="#{not empty program.categories ? 'A':'N/A'}"/>
</li>
</h:panelGroup>
现在我试图像以下代码一样保持条件:
<c:if test="${program.distTypeName != 'X' || program.distTypeName != 'Y' || program.distTypeName != 'Z'}">
<h:panelGroup rendered="#{not empty program.categories}">
<li>
<strong>Category: </strong>
<h:outputLabel value="#{not empty program.categories ? 'A':'N/A'}" />
</li>
</h:panelGroup>
但这不起作用。请告诉我我做错了什么。基本上,如果disType
不在x,y,z中,那么我需要显示h:panelGroup
。
我们如何使用jstl标签测试not in
条件?
提前谢谢。
答案 0 :(得分:0)
JSTL标记和JSF标记不同步。 JSTL标记在构建时运行,而JSF标记在渲染时运行。这就是为什么你会看到一个奇怪的行为。您应该使用JSF rendered
属性而不是c:if
此外,char比较也与Java不同。字符在EL表达式中的行为类似于String,这意味着!=
运算符无法为String
比较提供正确的结果。
<c:if test="${program.distTypeName != 'X' || program.distTypeName != 'Y' || program.distTypeName != 'Z'}">
以上c:if
语句可以转换为渲染属性,如
<h:panelGroup rendered="#{program.distTypeName.compareTo('X') != 0 || program.distTypeName.compareTo('Y') != 0 || program.distTypeName.compareTo('Z') != 0}">
如果distTypeName
是char
,也可以在此处使用或字符的ASCII表示。
<h:panelGroup rendered="#{program.distTypeName ne 88 || program.distTypeName ne 89 || program.distTypeName ne 90}">
相关文章