1

Q: primefaces を使用してフォームを送信するときにコンポーネントを除外するには、どの構文を使用すればよいですか?

プロセス属性を使用して、コンポーネントを含める方法を知っています。

<h:inputText id="included"/>
<p:commandButton value="button" process="included" actionListener="#{myBean.doStuff}/>

ここでの回答で使用されているものと同様の構文で遊んでみました:親コンポーネントの ajax 更新で子コンポーネントを除外する方法は? しかし、それを機能させることはできません

<h:inputText id="notIncluded" styleClass="notIncluded"/>
<p:commandButton ... process="@(form :not(.notIncluded))"/>

編集 (宿題をして実際に動作する例を追加): Glassfish 3.1.2.2 および primefaces 3.4.2 について

さらに調べてみると、除外は h:panelGrid 内で正常に機能します

<h:form id="aForm">
    <h:panelGrid columns="2">
        <p:inputText id="inc" styleClass="included" required="true" />
        <p:message for="inc" />
        <p:inputText id="notInc" styleClass="notIncluded" required="true" />
        <p:message for="notInc" />

        <p:commandButton value="submit" process="@(form :not(.notIncluded))"
            update=":aForm" />
    </h:panelGrid>
</h:form>

ただし、同様の p:panelGrid 内で除外されなくなりました

<h:form id="aForm">
    <p:panelGrid columns="2">
        <p:inputText id="inc" styleClass="included" required="true" />
        <p:message for="inc" />
        <p:inputText id="notInc" styleClass="notIncluded" required="true" />
        <p:message for="notInc" />

        <p:commandButton value="submit" process="@(form :not(.notIncluded))"
            update=":aForm" />
    </p:panelGrid>
</h:form>
4

1 に答える 1

4

あなたの例を確認しました。ページのソースを確認するとp:panelGrid、id を持つテーブルが作成されていることに気付くでしょう。少し奇妙ですが、テーブルにIDがある場合、 jQueryセレクターは子にアクセスしません。テーブル ID を削除すると、ボタンは正常に機能します。したがって、私の解決策はpanelGrid、セレクターでこの ID を指定して使用することでした。テーブルに同じ ID を与えますが、h:form に属性p:panelGridを追加する必要があります。prependId="false"

<h:form id="aForm" prependId="false">
    <p:panelGrid columns="2" id="myGrid">
        <p:inputText id="inc" styleClass="included" required="true" />
        <p:message for="inc" />
        <p:inputText id="notInc" styleClass="notIncluded" required="true" />
        <p:message for="notInc" />

        <p:commandButton value="submit" process="@(#myGrid :not(.notIncluded))"
            update=":aForm" />
    </p:panelGrid>
</h:form>
于 2012-12-30T04:26:02.630 に答える