0

Richfaces 3.3 を使用して JSF 1.2 アプリケーションに取り組んでいます。を含むポップアップがありますrich:extendedDataTable。テーブルの行をクリックすると、ボタンを有効または無効にしたいので、a4j:support event="onRowClick".

ここにいくつかのコードがあります:

<h:form>
    <rich:panel id="main">
        <a4j:commandButton id="completed" value="Completed" 
        rendered="#{bean.completedCase}" />

        <a4j:commandButton  value="Open"
                oncomplete="#{rich:component('popupId')}.show(...)">
        </a4j:commandButton>

        <rich:modalPanel id="popupId">
            <a4j:region>

                <rich:extendedDataTable id="source" value="#{bean.sourceItems}" 
                    var="sourceItem" selectionMode="single" >
                    <a4j:support event="onRowClick" eventsQueue="pickQueue" reRender="copy" >
                        <f:setPropertyActionListener value="#{sourceItem}"
                            target="#{bean.sourceSelection}" />
                    </a4j:support>
                    ....
                </rich:extendedDataTable>           

                <a4j:commandButton id="copy" value="Copy" />
            </a4j:region>

            <a4j:commandButton value="Ok" reRender="completed"
                    oncomplete="#{rich:component('popupId')}.hide();return false;">
            </a4j:commandButton>

        </rich:modalPanel>
    </rich:panel>
</h:form>

問題は、行をクリックすると、バックエンドでボタンをレンダリングするために使用されるいくつかのメソッドが呼び出されることですrendered="#{bean.completedCase}"が、ボタンはポップアップではなく、ポップアップを超えたページにあります。テーブルに使用されるメソッド以外のメソッドが呼び出される理由は何ですか?

4

2 に答える 2

0

ネストされた<h:form>s を持つことはお勧めできませんが、複数の s を持つことはできます。が 1 つになり、が別の形式<h:form>になるようにコードを変更してみてください。<h:commandButton>h:form<h:modalPanel>

お役に立てれば。<a4j:form>for を試すこともできますmodalPanel

于 2012-07-12T09:28:26.753 に答える
0

タグで使っajaxsingle="true"てみてください。onrowclick がリクエストを発行するときにa4j:support使用しているため、h:form 内のすべてのコンポーネントは、モデルの更新フェーズ中にサーバー上で処理されます。h:form

お役に立てれば。

于 2012-07-12T00:18:05.020 に答える