情報で満たされた dataTable があります。選択された 1 行で「onRowSelect」メソッドが呼び出されます。「注文番号」の outputText エントリには、ProductOrder オブジェクトから取得した値が入力されます。
/* Filter bean */
public void onRowSelect(SelectEvent event) {
NewOrderBean currentOrder = (NewOrderBean) FacesUtils
.getManagedBean("newOrderBean");
currentOrder.setOrderNum(((ProductOrder) event.getObject()).getOrderNum());
}
/* newOrderBean */
public int update() {
ProductOrder pt = new ProductOrder ();
try {
pt = productService.findOrderbyNum(orderNum).get(0);
} catch (Exception e) {
return 0;
}
pt.setOrderNum(orderNum);
try {
FacesMessage msg = new FacesMessage("Product updated with: ", orderNum);
FacesContext.getCurrentInstance().addMessage(null, msg);
return 1;
} catch (Exception e) {
return 0;
}
}
ユーザーは、「注文番号」に新しいテキストを入力した後、[更新] を押して製品注文番号を変更します。
<!-- JSF page -->
<ui:define id="content" name="contentBody">
<h:form class="ViewResservation" id="viewPanel">
<p:tabView id="tabView">
<p:tab title="Client" id="tab1">
<h:outputText value="Order number " />
<p:inputText id="ordr" value="#{newOrderBean.orderNum}" />
</p:tab>
</p:tabView>
</h:form>
</ui:define>
<ui:define name="footer">
<h:form>
<h:commandButton value="Update"
actionListener="#{newOrderBean.update}" />
</h:form>
</ui:define>
問題は、新しいテキストを入力して [更新] を押した後、値 (orderNum) が同じままになることです。ユーザーが入力した値を取得し、ProductOrder オブジェクトを新しい注文番号で更新するにはどうすればよいですか?