带链接的jsf / primefaces dataTable;错误的打开/显示

时间:2017-03-22 15:02:38

标签: jsf primefaces

我有一个primefaces dataTable,其中有几个URL作为数据。每行有一个URL。一条线有一个按钮。如果单击它,将打开一个对话框,其中包含带有相应URL网站的iframe。

这是(缩短的)xhtml:

change

带有按钮的表格显示正确:

Information Link

如果我查看带有firebug的隐藏对话框,则URL正确放置! id也是生成的:

<p:dataTable id="transResult" rendered="#{not empty urlList}"
             var="aUrl"
             value="#{urlList}">
   <p:column ...></p:column>
   ...
   <p:column>
       <p:commandButton id="urlBtn" value="#{aUrl}"     
                        onclick="PF('showURL').show();"/>

       <p:dialog id="urlDialog" widgetVar="showURL">
           <h:outputLabel value="URL:&#160;#{aUrl}"/>
           <iframe src="#{aUrl}"/> 
       </p:dialog>
   </p:column>
</p:dataTable>

问题: 但是当我点击某个按钮时,总是会打开带有最后网址的对话框。

知道为什么会出错?

1 个答案:

答案 0 :(得分:0)

我找到了似乎有效的解决方案。基础是拥有不同的widgetVar。

<p:dataTable id="transResult" rendered="#{not empty urlList}"
         var="data"
         value="#{urlList}">
    <p:column ...></p:column>
    ...
    <p:column>
        <p:commandButton id="urlBtn" value="#{aUrl}"     
                         onclick="PF('showURL#{data.id}').show();"/>

       <p:dialog id="urlDialog" widgetVar="showURL#{data.id}">
           <h:outputLabel value="URL:&#160;#{data.aUrl}"/>
           <iframe src="#{data.aUrl}"/> 
       </p:dialog>
   </p:column>
</p:dataTable>

所以我们每行都有一个ID,它也被添加到widgetVar中以使它们不同。

请注意,使用此解决方案时,会在创建表时计算所有内容。所以没有什么&#34;动态&#34;。但是对于我的需求,这没有问题。