从jsf页面重新更新域对象属性

时间:2012-08-25 18:28:51

标签: jsf jsf-2 primefaces

我有一个填充信息的dataTable。在选定的一个rown“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对象?

1 个答案:

答案 0 :(得分:1)

标签必须位于tabview元素内。你倒了。

对于您的问题,您的订单号设置为一个表单,而您的提交按钮设置在另一个表单中。您需要将两者放在同一表格中,否则订单号不会被提交。

相关问题