JSF中的条件变量定义

时间:2011-12-06 12:45:18

标签: jsf-2 facelets

我想根据条件更改变量值 所以我尝试了以下内容:

<h:head>

    <ui:param name="userCase" value="Insert" />

    <ui:fragment rendered="#{employee.employeesBulkInsert==false}">
       <ui:param name="userCase" value="Update" />
    </ui:fragment>

       <title>#{userCase} Employee </title>

</h:head>

但它在更新的情况下不起作用,它显示一个空字符串,任何想法为什么?

我知道还有其他解决方案,比如在支持bean中定义变量,或者直接在title标签上创建条件ui片段,但我想知道为什么上面的不起作用,请指教,谢谢。

2 个答案:

答案 0 :(得分:13)

<ui:fragment>是渲染时标记,而<ui:param>是标记处理程序(标记处理程序很容易通过缺少rendered属性识别)。因此,在构建视图时,无论<ui:param>的结果如何,都会设置<ui:fragment>。仅在呈现已构建的视图时才评估rendered的{​​{1}}属性。

您希望使用标记处理程序来创建条件,例如JSTL <ui:fragment>

<c:if>

(请注意,我删除了不必要的布尔<ui:param name="userCase" value="Insert" /> <c:if test="#{not employee.employeesBulkInsert}"> <ui:param name="userCase" value="Update" /> </c:if> 比较)

答案 1 :(得分:2)

尝试使用JSTL:

<c:set var="userCase" value="Insert" />
<c:if test="#{employee.employeesBulkInsert}">
    <c:set var="userCase" value="Update" />
</c:if>

此处的教程:http://www.ibm.com/developerworks/java/library/j-jstl0211/index.html