2

完全なフォームが必要な複雑な入力テキストのような 1 つの複合コンポーネントを作成しています (検索フォームが表示され、ユーザーがそれらの 1 つを選択するための 1 つの結果リストが表示されます)。

<composite:implementation>
    <div id="#{cc.clientId}" class="#{cc.attrs.styleClass}">
        <h:inputText id="txtIdentificador" ...>
        <h:graphicImage id="imgIdentificador" ...>
        <h:inputText id="txtDescripcion" ...>
        <h:form id="formF2ItemWidget">
        ...
        </h:form>
    </div>
</composite:implementation>

論理的には、他の形で使用したいのですが、それを行う際に問題があります。例えば

<h:form id="formOuter" >
    <h:outputLabel value="Texto1" />
    <trkal:itemwidget id="txtTexto1">
    ...
</h:form>

生成された HTML には内部フォーム (formF2ItemWidget) がなく、id=formOuter のフォームのみが含まれます。しかし、以下の例では:

<h:form id="formOuter" >
    <h:outputLabel value="Texto1" />
    <trkal:itemwidget id="txtTexto1">
    <h:outputLabel value="Texto2" />
    <trkal:itemwidget id="txtTexto2">
    ...
</h:form>

txtTexto1 のフォームは存在しませんが、txtTexto2 のフォームは存在します。なんで?

この問題を起こさずに、フォームを含む複合コンポーネントを作成するにはどうすればよいですか?

Mojarra 2.1.7、Java 6.0 y Tomcat 7.0 を使用しています

4

1 に答える 1

6

HTML では<form>要素のネストは違法です。JSF は単なる HTML コード ジェネレーターであるため、ここで JSF に魔法をかけることはできません。

JSFでもコンポーネントをネストしないでください。<h:form>コンポジットからそれを削除し<h:form>、「サブフォーム」を処理する別の方法を探します。

于 2012-10-18T11:19:11.013 に答える