1

情報で満たされた 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 オブジェクトを新しい注文番号で更新するにはどうすればよいですか?

4

1 に答える 1

1

タブはtabview要素内にある必要があります。あなたはそれを逆にしました。

あなたの問題のために、あなたの注文番号は1つのフォームで設定され、あなたの送信ボタンは別のフォームで設定されます。両方を同じフォームに入れる必要があります。そうしないと、注文番号が送信されません。

于 2012-08-25T23:13:43.690 に答える