0

2 つのコマンドリンク ボタンと 2 つの出力パネルを含む .xhtml があります。同じフォーム内のすべて。commandlink をクリックしたときに、どの出力パネルをレンダリングする必要があるかを明示的に指定する必要があるのはなぜですか? 何も指定されていない場合は、仕様からの次の説明に基づいてビュー全体を再構築するべきではありませんか (または) 私は物事を混合していますか?

同様action="navigation-rule"に、同じビューでコンポーネントを更新したいときに本当に設定する必要がありますか?

Link controls are typically used to perform complete form submissions for data storing.
As a consequence, the <a4j:commandLink> component has the execute="@form" setting by default. 

どんな入力でも大歓迎です。

参照用のコードは次のとおりです。

 <h:form>
        <div>
            <a4j:outputPanel layout="block">
                <!--Tab1 -->
                <a4j:commandLink
                    id="homeTabLinkId"
                    value="Tab1"
                    actionListener="somelistener" render="contentDIVId">
                    <h:outputText value=""/>
                </a4j:commandLink>
                <!--Hosts Tab -->
                <a4j:commandLink 
                    id="hostsTabLinkId"
                    value="Tab2"
                    actionListener="anotherlistener" render="contentDIVId">
                    <h:outputText value=""/>
                </a4j:commandLink>


            </a4j:outputPanel>
        </div>

        <a4j:outputPanel layout="block" id="contentDIVId">
            <!-- dynamically gets src based on tab click -->
            <ui:include id="tabBodyPanel" src="elexpression"/>
        </a4j:outputPanel>

        <a4j:outputPanel layout="block" id="anotherdiv">
            <h:outputText value="Inside second div"/>
        </a4j:outputPanel>

    </h:form> 
4

1 に答える 1

3

何も指定されていない場合、仕様からの次の説明に基づいてビュー全体を再構築するべきではありません(または)私は物事を混ぜていますか?

これは同期リクエストにのみ適用されます。に置き換えると、説明されている動作が得<a4j:commandLink>られ<h:commandLink>ます。


また、同じビューでコンポーネントを更新する場合は、action = "navigation-rule"を設定する必要がありますか?

いいえ。actionメソッドはnullまたはを返すことができvoidます。そうしないと、ビューが再作成され、スコープ付きBeanをビューで表示した場合はそれが望ましくありません。

于 2012-05-04T21:04:22.863 に答える