【问题标题】:Problem passing boolean value from rich:ComponentControl in order to render rich:menuItems从rich:ComponentControl 传递布尔值以呈现rich:menuItems 时出现问题
【发布时间】:2010-09-17 16:59:57
【问题描述】:

我们有以下丰富的:ComponentControl:

<rich:componentControl event="onRowClick" for="ctxMenu" operation="show">
<f:param value="#{item.hasDocuments}" name="hasDocuments" />
</rich:componentControl>

#{item.hasDocuments} 的值已成功从 bean 传递为 true 或 false。

这是应该有条件地显示项目的 contextMenu:

<rich:contextMenu id="ctxMenu" submitMode="ajax" attached="false">
<rich:menuItem ajaxSingle="true" value="View Documents oncomplete="#{rich:component('documentsMenu')}.doShow(event, {})" reRender="documentsMenu" rendered="#{hasDocuments}">
<a4j:actionparam name="selectedApplicationId" value="#{applicationId}" assignTo="#{activeAppsForm.applicationId}" />
</rich:menuItem>
</rich:contextMenu>

问题在于它总是隐藏链接,即使 {hasDocuments} 为真。 我的猜测是 {hasDocuments} 的值被视为字符串而不是布尔值,因此渲染将始终为假。

关于如何解决这个问题的任何想法?

【问题讨论】:

  • 您应该更新您的问题以修复 EL 语法错误以避免红鲱鱼。
  • 更新了问题。关于如何解决此问题的任何其他想法?

标签: java jsf richfaces


【解决方案1】:

我花了 2 个小时解决了这个问题。但最后还是解决了。请尝试以下操作:

rendered="#{hasDocuments == 'true'}"

【讨论】:

    【解决方案2】:

    两个问题。首先,从rich:componentControl 传递的所有参数在menuItem 中被引用而没有阴影线。所以你想要像

    rendered="{hasDocuments}"
    

    但是由于第二个问题,这仍然行不通。据我所知,从 rich:componentControl 传递的参数总是作为字符串传递。

    所以尝试将 hasDocuments 视为字符串。你想要的东西看起来像

    rendered="#{{hasDocuments}.equals('true')}"
    

    巨大的警告:这主要是理论,我在我的应用程序中发现了一个我尚未解决的类似问题。如果您设法解决,请发布您的答案。

    【讨论】:

      猜你喜欢
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 2017-09-05
      • 2019-08-10
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多