【问题标题】:JSF: Ternary operator used to assign a value to an <f:param> failsJSF:用于为 <f:param> 赋值的三元运算符失败
【发布时间】:2011-04-19 17:25:29
【问题描述】:

我在 XHTML 文件中使用 JSF 标记。我的意图是通过适当地将“禁用”属性设置为“真”或“假”来启用或禁用&lt;rich:MenuItem&gt; 上下文菜单项。为此,我在三元运算符中使用支持 bean 变量,并根据 bean 变量将&lt;f:param&gt; 值设置为“true”或“false”,如下所示:

<rich:componentControl event="oncontextmenu" for="network-tree-menu"
operation="show">
       <f:param id="nestlevel" value="#{item.nestLevel > 10 ? 'true' : 'false'}"  
        name="nestlevel" />
 </rich:componentControl>  

其中item 是支持bean,item.nestLevel 是一个整数。

我稍后会在 XHTML 文件中使用这个 &lt;f:param&gt; 值,如下所示:

<rich:contextMenu ...
    <rich:menuItem id="abc" ajaxSingle="true" disabled="{nestlevel}"
            onclick="doSomething();" value="Do something...">
</rich:contextMenu>  

这不工作!即使三元运算的结果是“真”,菜单项也始终处于启用状态(我猜这是默认行为)。我在这里缺少语法吗,还是有其他方法可以在 XHTML 文件中对上下文菜单项进行有条件的启用?

提前致谢。

问候,
纳根德拉 U M

【问题讨论】:

  • 您是否可以在托管 bean 中设置值,即您所说的真或假?
  • 我不知道那些 RichFaces 应该如何工作,但 disabled="{nestlevel}" 根本不是有效的 EL。

标签: jsf xhtml richfaces


【解决方案1】:

这个怎么样:

<f:param id="nestlevel" value="#{item.nestLevel > 10}" name="nestlevel" />

【讨论】:

  • 这有效,因为值 {nestlevel} 适当地包含“true”或“false”。 (我使用警报检查了这一点)。但是,即使 {nestlevel} 的值为“true”,上下文菜单项仍处于启用状态。这是否意味着 标签的“禁用”属性不接受 EL 值?我的意图是根据 {nestLevel} 值有条件地启用和禁用上下文菜单项。请帮忙!!
猜你喜欢
  • 2019-11-05
  • 2013-06-28
  • 2012-02-14
  • 2021-04-29
  • 2021-03-22
  • 1970-01-01
  • 2011-07-02
  • 2021-11-23
  • 1970-01-01
相关资源
最近更新 更多