【问题标题】:Generate and use unique name for PrimeFaces remoteCommand为 PrimeFaces remoteCommand 生成和使用唯一名称
【发布时间】:2012-08-08 11:06:39
【问题描述】:

我了解对于具有 widgetVar 属性的 PrimeFaces 组件,我可以使用 p:widgetVar('myComponentId') 来获取从组件 ID 派生的 widgetVar。如果<p:remoteCommand/> 存在相同类型的功能,那就太好了,这样我就可以拥有使用<p:remoteCommand/> 的相同类型复合组件的多个实例。我最初尝试了widgetVar 功能,但后来意识到它不起作用。

<p:remoteCommand id="previousCycleCommand"
                 actionListener="#{cc.selectPreviousCycle()}"
                 update=":#{cc.clientId}:updateable"
                 partialSubmit="false"/>

<p:button id="previousCycleButton"
          icon="ui-icon-circle-triangle-w"
          onclick="#{p:widgetVar('previousCycleCommand')}();"/>

是否有任何 PrimeFaces 功能可用于从完全扩展的 ID 派生远程命令的名称?

【问题讨论】:

    标签: java jsf-2 primefaces facelets composite-component


    【解决方案1】:

    如何使用当前的客户端 ID 创建唯一 ID?由于每个复合组件都应该是唯一的命名容器,因此串联的 ID 也应该是唯一的。

    <p:remoteCommand id="#{cc.clientId}_previousCycleCommand"
                 actionListener="#{cc.selectPreviousCycle()}"
                 update=":#{cc.clientId}:updateable"
                 partialSubmit="false"/>
    
    <p:button id="previousCycleButton"
          icon="ui-icon-circle-triangle-w"
          onclick="#{cc.clientId}_previousCycleCommand();"/>
    

    【讨论】:

    • 问题在于 #{cc.clientId_previousCycleCommand()} 不能保证是一个有效的 JavaScript 标识符,尤其是在复合组件在命名容器中实例化的情况下。我想我可以为此目的制作自己的p:widgetVar-like 方法。
    • 抱歉。你是对的。除此之外,我完全搞砸了 remoteCommand 的 id 和 name 属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多