2012-08-08 54 views
1

我知道对于具有widgetVar属性的PrimeFaces组件,我可以使用p:widgetVar('myComponentId')获取从组件的ID派生的widgetVar。如果<p:remoteCommand/>存在相同类型的功能将会很好,因此我可以使用<p:remoteCommand/>的同一类型复合组件的多个实例。我最初尝试了widgetVar函数,但后来意识到它不起作用。为PrimeFaces remoteCommand生成并使用唯一的名称

<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派生远程命令的名称?

回答

0

如何使用当前客户端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();"/> 
+0

这问题是'#{cc.clientId_previousCycleCommand()}'是不能保证是有效的JavaScript标识符,特别是在所述复合部件是命名容器内实例化的情况。我想我可以为此制作自己的'p:widgetVar'类方法。 – 2012-08-09 00:02:13

+0

哦,对不起。你是对的。除此之外,我完全搞砸了remoteCommand的id和name属性。 – 2012-08-09 12:06:31