0

ajaxフォームを構築しようとしています。フォームの状態(開始、確認など)を保持するために、「pageMode」と呼ばれるBean変数を使用しています。pageMode の値に応じて、私の jsf ページはいくつかのボタンをレンダリングするかレンダリングしません。(開始時は送信ボタンのみ表示、送信後は確認ボタン表示...)

これが私の問題です。

最初にページにアクセスしたときは [送信] ボタンは正常に機能しますが、送信後は [確認] ボタンが正しく機能しません (Bean メソッドを起動しません)。

ボタンを h:pannelGrid でラップし、rendred 属性を配置しようとしましたが、機能しませんでした :((.

xhtml は次のようになります。

<h:form id="ApplicationForm" styleClass ="form-horizontal well"> 

    <p:panel header="#{msg.bilgiler}" id="formVars"  styleClass="well">

    <h:panelGrid styleClass="defaultTable" id="pg" columns="2">
        <h:outputText value="#{msg.ad}"/>
        <p:inputText value="#{applicationFormInc.userData.userName}" rendered="#{applicationFormInc.pageMode=='start'}"/>
        <h:outputText value="#{applicationFormInc.userData.userName}"  rendered="#{applicationFormInc.pageMode=='confirm'}"/>

        ...

        <p:commandLink styleClass="btn btn-primary" update="pg,confirmButtons" rendered="#{applicationFormInc.pageMode=='start'}"
                                   action="#{applicationFormInc.confirmActionAjax}" value="Submit">
                        <i class="icon-remove icon-white"></i>
                    </p:commandLink>
        <h:panelGrid id="confirmButtons" >
        <p:commandLink styleClass="btn btn-primary" update="pg" rendered="#{applicationFormInc.pageMode=='confirm'}"
                       action="#{applicationFormInc.executeAction}" value="ConfirmAndSave" >
                        <i class="icon-remove icon-white"></i>
                    </p:commandLink>

            </h:panelGrid>
    </h:panelGrid>
    </p:panel>

</h:form>

Bean 側の executeAction

 public String executeAction(){
    DbTools tr = new DbTools();
    tr.insertRecord(getUserData()); 
    return "index.xhtml?faces-redirect=true";
}

ありがとう。

4

1 に答える 1

0

commandLinks で処理したいものを定義します -

<p:commandLink .... process="ApplicationForm" >

または、入力を処理したくない場合:

<p:commandLink .... process="@this" >
于 2013-10-29T15:08:46.220 に答える