我对Primefaces数据表和上下文菜单有疑问。
上下文菜单只包含一个选项,用于删除包含记录的行。
我如何理解,我需要传递给托管bean var参数(订单)?其中包含地图结构中的行数据。
<p:dataTable id="#{id}" var="order" rowIndexVar="rowId" value="#{ordersProvider}" emptyMessage="No more rows" rowKey="#{id}" selectionMode="single">
<p:column headerText="№" filterBy="#{order.id}" filterMatchMode="contains">
<div style="text-align: center;">
<h:outputText value="#{order.id}"/>
</div>
</p:column>
<p:column headerText="№ on site" filterBy="#{order.noticeNumber}" filterMatchMode="contains">
<div style="text-align: center;">
<h:outputText value="#{order.noticeNumber}" />
<f:param name="searchString" value="#{order.noticeNumber}" />
</div>
</p:column>
<p:column headerText="Company" filterBy="#{order.customerName}" filterMatchMode="contains">
<div style="text-align: center;">
<h:outputText value="#{order.customerName}"/>
</div>
</p:column>
<p:column id="col">
<f:facet name="header">
<p:contextMenu for="#{id}">
<p:menuitem value="Delete" update="#{id}" icon="ui-icon-close" action="#{clientOrdersBean.cancel(order)}"/>
</p:contextMenu>
</f:facet>
</p:column>
</p:dataTable>
这是我的bean方法,用于删除数据。
public void cancel(OrderBG order){
order.setStatus(OrderStatus.Canceled);
Environment.getInstance().getServiceProvider().getOrderBgService().save(order);
}
问题是,该值传递 - null。我不知道如何从桌子上获得整排。
有什么建议吗?提前谢谢。
答案 0 :(得分:0)
getter和setter成功解决了问题。
在托管bean中:
private OrderBG newOrder = new OrderBG();
public OrderBG getNewOrder() {
return newOrder;
}
public void setNewOrder(OrderBG newOrder) {
this.newOrder = newOrder;
}
public void cancel(){
getNewOrder().setStatus(OrderStatus.Canceled);
Environment.getInstance().getServiceProvider().getOrderBgService().save(getNewOrder());
}
在xhtml UI中:
<p:contextMenu for="#{id}">
<p:menuitem value="Delete" update="#{id}" icon="ui-icon-close" actionListener="#{clientOrdersBean.cancel}"/>
</p:contextMenu>
<p:dataTable id="#{id}" var="order" value="#{ordersProvider}" emptyMessage="Заявки отсутствуют" rowKey="#{id}" selection="#{clientOrdersBean.newOrder}" selectionMode="single">