6

2ページあります

input.xhtml

<h:form>
    <p:panelGrid>
        <p:row>
            <p:column>
                <h:outputText value="Name : "/>
            </p:column>
            <p:column>
                <p:inputText id="name" value="#{inputBean.name}"/>
            </p:column>
        </p:row>
        <p:row>
            <p:column colspan="2" >
                <p:commandButton action="#{inputBean.buttonAction}" value="Submit"/>
            </p:column>
        </p:row>
    </p:panelGrid>
</h:form>

display.xhtml

<h:form id="form1">
    <h:outputText value="#{inputBean.name}" id="dis123"/>
</h:form>

以下のように両方を1つのページに含めると

index.xhtml

<p:accordionPanel widgetVar="main" multiple="true">
    <p:tab title="Input">
        <ui:include src="input.xhtml"/>
    </p:tab>

    <p:tab title="Output">
        <ui:include src="display.xhtml"/>
    </p:tab>
</p:accordionPanel>

update="dis123"のコマンドボタンから呼び出すことはできますinput.xhtmlか?

4

1 に答える 1

18

いいえ、できません。のような相対的なクライアントIDは、update="dis123"基本的に同じNamingContainer親コンポーネント(あなたの場合は<h:form>最初のページ)を検索します。ただし、そのようなコンポーネントは存在しません。実際には別のNamingContainer親にあります。代わりに、絶対クライアントIDを指定する必要がありますupdate=":form1:dis123"

手始めに、正しい絶対クライアントIDを計算する簡単な方法は、JSFで生成されたHTML出力(右クリック、ブラウザーでソースの表示)を調べて、目的のコンポーネントの生成されたHTML要素IDを探し、プレフィックスを付けること:です。

これはすべてインクルードとは関係がないことに注意してください。すべてのコードを1つのページにまとめた場合も、まったく同じ問題が発生します。

参照:

于 2013-01-21T12:56:32.663 に答える