1
我有一個充滿信息的數據表。在選定的一個rown上調用「onRowSelect」方法。 「訂單號」outputText條目填充了從ProductOrder對象檢索的值。從jsf頁面重新更新域的對象屬性
/* 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>
問題是,輸入新文本並按下更新後,value(orderNum)保持不變。我如何獲得用戶輸入的值,並使用新的訂單號更新ProductOrder對象?
是的,它的工作原理,謝謝siebz0r。我注意到,在我的情況下,每次按「更新」並選擇其中一行時。頁面刷新和onRowSelect方法再次被調用。爲什麼會發生? – alex
我不知道頁面刷新的原因。 onRowSelect可能被調用,因爲ajax事件的形式相同,但我不確定這一點。此外,如果我的答案回答您的問題,請將其標記爲已接受。 ;-) – siebz0r
是的,當然是男人。你幫了我很多! – alex