1

私が持っている質問の簡潔なバージョンは次のとおりです。

<h:inputText> 

に表示する同じ値を取得する

<h:outputText> 

inputText フィールドの範囲外にあります。

inputtext フィールドには、次の xpath があります。

//*[@id="form:j_idt40:src_table:0:j_idt137"]

出力テキストは次の場所にあります。

//*[@id="form:j_idt40:target_table:0:target_id"]

私はprimefacesデータテーブルを使用しており、2つのパスは2つの別々のデータテーブルにあります

入力フィールドの jsf コードは次のとおりです。

<p:dataTable id="src_table">
    <p:column id="src_id" headerText="srcHeader">
        <h:inputText value="#{bean.myAttribute}">
            <f:ajax event="blur" render="src_id WHAT_SHOULD_GO_HERE?" ></f:ajax>
        </h:inputText>
    </p:column>
</p:datatable>

出力のコードは次のとおりです。

<p:dataTable id="target_table">
    <p:column headerText="TargetHeader">
        <h:outputText id="target_id" value="#{bean.myAttribute}" />
    </p:column>
</p:datatable>

私は WHAT_SHOULD_GO_HERE でいくつかのパスを試しましたか? プレースホルダーですが、正しく理解できないようです。それらはすべて、次のような面の例外をスローすることになりました。

javax.faces.FacesException: <f:ajax> contains an unknown id ':target_id' - cannot locate it in the context of the component j_idt137

もちろん、これは WHAT_SHOULD_GO_HERE を置き換えたときでしたか? :target_id 付き

私も試しました:

form:j_idt40:target_table:0:target_id, 

:form:j_idt40:target_table:0:target_id 

しかし運がない。

xpath や f:ajax の理解とビューの特定の部分のレンダリングを手伝ってくれる人はいますか?

4

1 に答える 1

1

xpathの理解を手伝ってくれる人はいますか

JSF は Xpath をまったく使用しません<f:ajax>。相対または絶対クライアント ID だけが必要です。これは、 ajax update/render のコンポーネントのクライアント ID を見つける方法で詳しく説明されています。"bar" から参照される式 "foo" を持つコンポーネントが見つかりません

自動生成された ID によって表されるコンポーネントのみを変更j_idt40して、固定 ID を設定する必要があります。そうしないと、後でビューでコンポーネントを追加または削除したときに、再び壊れてしまいます。

于 2013-03-13T14:24:02.447 に答える