0

基本的に2つの問題があります。

Form1のボタンを押すと、正常に機能していますが、FacesContextからのメッセージが表示されません。もう1つの問題はForm2にあります。ボタンを1回だけ押すと、サーバーに移動しますが、何も起こらず、送信されません。しかし、2回押すと、正常に動作しています。もちろん、フォーム1と同じ問題があり、FacesContextからのメッセージが表示されません。それを引き起こしている原因を教えてください。または、1つのページ内に複数のフォームを含めるための別の解決策はありますか?

                    <p:tabView>
                        <p:tab title="Form1">
                            <h:form id="form1">
                                <p:inputText id="txtInput" value="#{controller.selected.defaultLayout}" />
                                <h:commandButton value="Submit other form" action="#{controller.createMenu()}">
                                    <f:ajax execute="@form" render="@form" />
                                </h:commandButton>

                            </h:form>
                        </p:tab>
                        <p:tab title="Form2">
                            <h:form id="form2">
                                <p:inputText id="txtInput2" value="#{controller.selected.defaultTheme}" />
                                <h:commandButton value="Submit other form" action="#{controller.createMenu2()}">
                                    <f:ajax execute="@form" render="@form" />
                                </h:commandButton>
                             </h:form>
                        </p:tab>
                    </p:tabView>

コントローラ:

public String createMenu() {

        Menu menu = current.getMenuMenuId();


        try {
            //current.getMenuMenuId().setMenuCreated(true);
            //getFacade().edit(current);
            JsfUtil.addSuccessMessage(ResourceBundle.getBundle("resources/Bundle").getString("MenuCreated"));-----> never visible!

            return "";
        } catch (Exception e) {
            JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("resources/Bundle").getString("PersistenceErrorOccured"));
            return null;
        }

    }

編集:外側のタグを外したところ、ページが機能しなくなり、エラーメッセージが表示されます:

javax.faces.FacesException: <f:ajax> contains an unknown id ':form2' - cannot locate it in the context of the component j_idt77
    at com.sun.faces.renderkit.html_basic.AjaxBehaviorRenderer.getResolvedId(AjaxBehaviorRenderer.java:285)
    at com.sun.faces.renderkit.html_basic.AjaxBehaviorRenderer.appendIds(AjaxBehaviorRenderer.java:272)
    at com.sun.faces.renderkit.html_basic.AjaxBehaviorRenderer.buildAjaxCommand(AjaxBehaviorRenderer.java:214)
    at com.sun.faces.renderkit.html_basic.AjaxBehaviorRenderer.getScript(AjaxBehaviorRenderer.java:86)
    at javax.faces.component.behavior.ClientBehaviorBase.getScript(ClientBehaviorBase.java:103)

ありがとうございました!サーミ人

4

1 に答える 1

1

フォームのネストは有効な HTML ではありません。これにより、予期しない動作が発生します。外側のフォームを削除して、どの問題が解決しないかを確認してください。

アップデート:

Primefaces tabview は、フォームがなくても機能します。ただし、タブ内に入力要素とコマンド ボタンがある場合は、フォームが必要です。ただし、これは html の要件であり、PF 固有ではありません。内側のフォームではなく、外側のフォームのみを削除する必要があります。現在のバージョンで質問を更新してください。

于 2012-05-10T20:55:51.617 に答える