【问题标题】:Conditional variable definition in JSFJSF 中的条件变量定义
【发布时间】:2012-01-14 01:32:24
【问题描述】:

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

<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>

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

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

【问题讨论】:

  • 最好的做法是说出您遇到的行为(错误?消息是什么?不是您期望的输出?您期望的结果?),而不仅仅是“不起作用”。
  • 当然,我会更新问题:)

标签: jsf-2 facelets


【解决方案1】:

&lt;ui:fragment&gt; 是一个渲染时标记,而&lt;ui:param&gt; 是一个标记处理程序(标记处理程序很容易通过缺少rendered 属性来识别)。所以当视图被构建时,&lt;ui:param&gt; 被设置,不管&lt;ui:fragment&gt; 的结果如何。 &lt;ui:fragment&gt;rendered 属性仅在要呈现已构建的视图时进行评估。

您想改为使用标记处理程序来创建条件,例如 JSTL &lt;c:if&gt;

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

<c:if test="#{not employee.employeesBulkInsert}">
    <ui:param name="userCase" value="Update" />
</c:if>

(请注意,我删除了不必要的布尔值==false 比较)

【讨论】:

    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多