[英]JSTL c:choose c:when not working in a JSF page
考虑以下jstl选择:
<c:choose>
<c:when test="#{AuthMsgBean.rw['2'] ne null}">
Display Text
</c:when>
<c:otherwise>
<ph:outputText id="pan" value="Component pan could not be created." />
</c:otherwise>
</c:choose>
AuthMsgBean = Bean
rw =地图
'2'=关键
题:
当我只显示#{AuthMsgBean.rw['2'] ne null}
值时,它显示正常(true),但是一旦我尝试将值解析为<c:when test=""/>
when标签re - 就像测试总是假的一样。
如果我在测试中输入true( test="true"
),则显示test="true"
显示文本test="true"
。
是否可以在#{AuthMsgBean.rw['2'] ne null}
表达式之前评估<c:when>
标记?
如果是这样,有解决方法吗?
JSTL和JSF不像您期望的编码那样同步运行。 在JSF视图构建时,它的JSTL首先从上到下运行,以生成仅包含JSF标记的视图。 在JSF视图渲染时,它是JSF,它从上到下再次运行以产生一堆HTML。
当JSTL轮到运行时, #{AuthMsgBean}
显然不在范围内。 当标记放在JSF迭代组件(如<h:dataTable>
时,就会发生这种情况。
无论如何,你不想在这里使用JSTL。 利用JSF rendered
attribtue。
<h:panelGroup rendered="#{not empty AuthMsgBean.rw['2']}">
Display Text
</h:panelGroup>
<h:outputText id="pan" value="Component pan could not be created." rendered="#{empty AuthMsgBean.rw['2']}" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.