XHTML文件:
<p:tab title="firstTab" id="FT">
<p:dataTable var="..." value="#{...}" id="firstTable" selectionMode="multiple"
selection="#{myController.selectedRows}">
<p:column>...</p:column>
<p:column>...</p:column>
<p:commandButton value="View" action="#myController.viewSelected}"/>
</p:dataTable>
</p:tab>
<p:tab title="secondTab" id="ST">
<p:dataTable var="..." value="#{...}" id="secondTable" selectionMode="multiple"
selection="#{myController.selectedRows}">
<p:column>...</p:column>
<p:column>...</p:column>
<p:commandButton value="View" action="#myController.viewSelected}"/>
</p:dataTable>
</p:tab>
托管Bean:
@ManagedBean
@RequestScoped
public class MyController{
MyObject[] selectedRows;
//get+set
public void viewSelected(){
System.out.println(selectedRows.length)
}
}
控制台输出有所不同。有时输出 0 但通常selectedRows内容搞砸了。如果我在两个dataTable-s中都有选择并按下两个commandButton-s中的一个,结果会混合。我猜这是因为按钮没有特定的id,或者我应该为每个dataTable使用不同的业务属性。哪个是这个问题的正确解决方案?
谢谢!
答案 0 :(得分:1)
您使用的PF版本是什么?
此外,如果commandButton
不在列中或其他任何内容中,那么与他有什么关系?
如果你想成为一个dataTable页脚,你必须这样做:
<f:facet name="footer">
<p:commandButton value="View" action="#myController.viewSelected}"/>
</facet>
您将所有行从两个dataTable分配到同一个数组的方式,我认为这不是一个好习惯,事实上我从来没有见过这样的东西!有什么意义?即使您希望有两个具有相同记录的dataTable,您至少应为每个表中的选定记录分配different array/list
,如果您不想同时触发这两个事件,请将它们放在different forms
中只按一下commandButton ......