0

我基本上有两个问题。

当我按下 Form1 中的按钮时,它工作正常,但我看不到来自 FacesContext 的消息。另一个问题是在 Form2 中。当我只按一次按钮时,它会转到服务器但没有任何反应,没有提交。但是当我第二次按下它时,它工作正常。当然也有和表格一一样的问题,我看不到来自 FacesContext 的消息。您能否帮忙告诉我是什么原因造成的,或者是否有另一种解决方案可以在一个页面内包含多个表单?

                    <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 回答