2

ツールバーとコンテンツの 2 つの領域が定義された単純なテンプレートがあります。ツールバー領域には多くのコマンド ボタンがあり、コンテンツにはフィールドがあります。私の問題は次のとおりです。2 つの ui:define 間で単一のフォームを使用する方法は?

私はサンプルコードを持っています:

<ui:composition template="/WEB-INF/templates/layout.xhtml">

    <ui:define name="toolbar">
        <p:commandButton id="saveButton" value="Save" ajax="false" action="#{...}" />
    </ui:define>

    <ui:define name="content">
        <h:form id="registerForm">
            <p:outputLabel for="name" value="Name"/>
            <p:inputText id="name" value="#{...}" required="true" />
            <p:message for="name"/>
         </h:form>
    </ui:define>

</ui:composition>

saveButton がトリガーされると、h:form registerForm が送信されます。

誰か提案がありますか?

4

1 に答える 1

0

この問題は ui:decorator で解決しました。「サブテンプレート」のように ui:decorator を使用すると、多くの ui:define の間にフォームを配置できます。これが役立つことを願っています。

テンプレート装飾.xhml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets">

    <ui:define name="toolbar"></ui:define>

    <ui:define name="content"></ui:define>
</html>

register.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"

    <ui:composition template="/WEB-INF/templates/layout.xhtml">
        <ui:define name="content">
            <h:form id="registerForm">
                <ui:decorate template="/WEB-INF/templates/layout-decorator.xhtml">

                    <ui:define name="toolbar">
                        <p:commandButton id="saveButton" value="Save" ajax="false" action="#{...}" />
                    </ui:define>

                    <ui:define name="form">
                        <p:outputLabel for="name" value="Name"/>
                        <p:inputText id="name" value="#{...}" required="true" />
                        <p:message for="name"/>
                    </ui:define>
                </ui:decorate>
            </h:form>
        </ui:define>

    </ui:composition>
</html>

詳細については、http: //docs.oracle.com/javaee/6/javaserverfaces/2.0/docs/pdldocs/facelets/ui/decorate.htmlを参照してください。

于 2013-06-07T17:16:27.030 に答える