当我按showDialog命令按钮
时,我得到一个空的选定行我看不出我的问题是什么
这是我的第一个表单:
<h:form id="firstForm">
<p:commandButton action="#{testBB.showDialog}" id="showDialog"
update=":secondForm" value="#{msg['show.dialog']}" />
</h:form>
这是我的第二种形式:
<h:form id="secondForm">
<p:dataTable id="testDatatable"
rendered="#{not empty testBB.list}"
rowKey="#{order.orderNumber}"
selection="#{testBB.selectedRow}"
selectionMode="single"
sortBy="customerName" value="#{testBB.list}" var="order">
<p:column headerText="#{msg['order.number']}">
<h:outputText value="#{order.orderNumber}" />
</p:column>
<p:column headerText="#{msg['total.value']}">
<h:outputText value="#{order.totalValue}" />
</p:column>
</p:dataTable>
</h:form>
我的支持bean:
@ManagedBean
@ViewScoped
public class TestBB implements Serializable {
private List<Order> list;
private Order selectedRow;
public void showOrder() {
try {
System.out.println(selectedRow);
} catch (Exception exception) {
}
}
}
我的DTO:
public class Order implements Serializable {
private int orderNumber;
private double totalValue;
public void showOrder() {
try {
System.out.println(selectedRow);
} catch (Exception exception) {
}
}
/** Getters and setters */
}
我的代码有什么问题?
答案 0 :(得分:2)
把
<p:ajax event="rowSelect" />
<p:ajax event="rowUnselect" />
在数据表中,选择/取消选择,只要点击发生就会发生。
如果您只需要在按钮上进行选择,请点击这样使用'process'
<p:commandButton process=":secondForm:testDatatable" update=":secondForm"/>
答案 1 :(得分:0)
您需要在rowSelection上更新模型。这可以使用<p:ajax event="rowSelect" />
来完成。以下是我认为您的数据表应如下所示:
<p:dataTable id="testDatatable"
rendered="#{not empty testBB.list}"
rowKey="#{order.orderNumber}"
selection="#{testBB.selectedRow}"
selectionMode="single"
sortBy="customerName" value="#{testBB.list}" var="order">
<p:ajax event="rowSelect" />
<p:column headerText="#{msg['order.number']}">
<h:outputText value="#{order.orderNumber}" />
</p:column>
<p:column headerText="#{msg['total.value']}">
<h:outputText value="#{order.totalValue}" />
</p:column>
</p:dataTable>
可以找到一个很好的例子here(Primefaces Demo)。
答案 2 :(得分:0)
正如Kerem Baydogan建议你必须在你的命令按钮中包含你的数据表id的process属性 如果您不包括process属性,那么组件树中将不会处理任何组件,并且不会更新任何模态值,因此您将选择为null。
如果您没有更改其状态,我觉得无需更新数据表。