我有一个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: #{aUrl}"/>
<iframe src="#{aUrl}"/>
</p:dialog>
</p:column>
</p:dataTable>
问题: 但是当我点击某个按钮时,总是会打开带有最后网址的对话框。
知道为什么会出错?
答案 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: #{data.aUrl}"/>
<iframe src="#{data.aUrl}"/>
</p:dialog>
</p:column>
</p:dataTable>
所以我们每行都有一个ID,它也被添加到widgetVar中以使它们不同。
请注意,使用此解决方案时,会在创建表时计算所有内容。所以没有什么&#34;动态&#34;。但是对于我的需求,这没有问题。