1
JavaのPrimeFaces DataTableコンポーネントからさまざまな行を取得したいとします。 findComponentを使用してViewRootからDataTableを見つけることができます。今私はコンポーネント(デバッガを使用して)を見て、私は3子ども、子供を見ることができます。これらの子は、私のDataTableの最初の行の3列ですが、私は他の行にアクセスできません。 アクセス方法Primeface DataTable Javaから行
マイ表XHTML
は次のように構成されています(例)<h:form id="form">
<p:dataTable id="table" var="t">
<p:column>
<p:inputNumber id="inputOne" />
</p:column>
<p:column>
<p:inputNumber id="inputTwo" />
</p:column>
<p:column>
<p:inputNumber id="inputThree" />
</p:column>
</p:dataTable>
</h:form>
これは私が私のJavaコード内のDataTableを取得する方法である:私は他の行にアクセスするにはどうすればよい
final DataTable table = (DataTable) getFacesContext().getViewRoot().findComponent("form:table");
table.getChildren(); // 3 Children, even if the DataTable got 10 Rows.
をデータ表?私は最初の行の3つの列を子供として取得します。
私がデバッガを通過できるようにしようとしましたが、他の行/コンポーネントを見つけることができません。
反対の方法についてどう:Javaでのテーブルのデータモデルを作成し、任意の行の任意のフィールドへのフルアクセスを持っていますか? –
DataModelははるかに複雑で実装済みです。無効なフィールドとして表示するには、それらを「無効」(.setValid(false))に設定するJavaのコンポーネントのみが必要です。検証は外部サービスによって行われるため、バリデータタグは使用できません。 – Sly321
このメソッドを使用していないとしても、動作するはずです。バッキングBeanにorg.primefaces.component.datatable.DataTable型のプロパティを定義し、
のバインディング属性を使用する必要があります。この新しいプロパティを使用してあなたのバッキングビーンよりも、行の値にアクセスすることができます。適切な方法を確認するにはDataTableのドキュメントをご覧くださいhttps://www.primefaces.org/docs/api/5.0/org/primefaces/component/datatable/DataTable.html –