1
정보로 채워진 dataTable이 있습니다. 선택한 하나의 rown에서 "onRowSelect"메서드가 호출됩니다. "주문 번호"outputText 항목은 ProductOrder 개체에서 검색 한 값으로 채워집니다.jsf 페이지에서 도메인 oject 속성을 다시 업데이트하십시오.
/* 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>
새 텍스트를 입력하고 Update를 누르면 값 (orderNum)이 그대로 유지됩니다. 사용자가 값을 입력하고 ProductOrder 객체를 새 주문 번호로 업데이트하려면 어떻게해야합니까?
예, 작동합니다. 감사합니다. siebz0r. 나는 나의 경우에 "Update"를 누를 때마다 그리고 행 중 하나가 선택 될 때마다 그 사실을 알아 챘다. 페이지 새로 고침과 onRowSelect 메서드가 다시 호출됩니다. 왜 이런 일이 일어나는가? – alex
페이지를 새로 고치는 이유를 알 수 없습니다. onRowSelect는 아마도 ajax 이벤트가 같은 형식이기 때문에 호출 될 것입니다.하지만이 사실을 확실히 알지 못합니다. 또한 내 대답이 귀하의 질문에 대한 답변이라면, 동의라고 표시하십시오. ;-) – siebz0r
예, 확실한 남자. 너 나 많이 도와 줬어! – alex