0

JSF 1.2 が DataTable を正確に管理する方法について質問があります。次のテーブルを検討してください (tableList.persone に 3 つの項目があるとします)。

<h:dataTable id="tablePersone" value="#{tableList.persone}" var="item">   

  <h:column>
    <f:facet name="header">
      <h:outputText value="STATO" />
    </f:facet>
    <h:inputText value="#{item.stato}" />
  </h:column>
  <h:column>
    <f:facet name="header">
      <h:outputText value="CODICE" />
    </f:facet>
    <h:inputText value="#{item.codice}" />
  </h:column>

</h:dataTable>

私は、レンダリング応答フェーズ中にjsfがリストのアイテムを反復処理することを読みました。実際、ビューが構築されたときに「アイテム」は利用できません。

ツリーコンポーネントを作成するときに、jsf がリスト内の各アイテムのテーブルの内容を複製しないということですか?

上の表では、各行に 2 つの inputText があります。jsf が行ごとにいくつかの inputText オブジェクトを作成しない場合、フォームが送信されたとき (特にリクエスト値の適用フェーズ中) に jsf が 6 つのリクエスト パラメータすべてを処理する方法。

どうもありがとう、

ニコ

4

1 に答える 1

0

私が間違っていなければ

ビューの復元フェーズ- このフェーズでは、要求されたページが以前に表示されていた場合はコンポーネント ツリーを取得し、初めて表示された場合は新しいコンポーネント ツリーを構築します。ページが以前に表示されていた場合、すべてのコンポーネントは以前の状態に設定されます。これは、JSF がフォーム情報を自動的に保持することを意味します。たとえば、ユーザーが不正なデータを投稿し、それがデコード中に拒否された場合、ユーザーが修正できるように入力が再表示されます。

リクエスト値の適用フェーズ- このフェーズでは、JSF 実装がコンポーネント ツリー内のコンポーネント オブジェクトを反復処理します。各コンポーネント オブジェクトは、どのリクエスト値がそれに属しているかを確認し、それらを保存します。

プロセス検証フェーズでは、送信された文字列値が最初に「ローカル値」に変換されます。これは、任意のタイプのオブジェクトにすることができます。JSF ページを設計するときに、ローカル値の正確性チェックを実行するバリデーターをアタッチできます。検証に合格すると、JSF ライフサイクルは正常に進行します。ただし、変換エラーまたは検証エラーが発生すると、JSF 実装は Render Response フェーズを直接呼び出し、現在のページを再表示して、ユーザーが正しい入力を提供する別の機会を提供できるようにします。

モデル値の更新フェーズ- このフェーズでは、ローカル値を使用して、コンポーネントに接続されている Bean を更新します。

Invoke Application フェーズでは、フォーム送信の原因となったボタンまたはリンク コンポーネントのアクション メソッドが実行されます。

Render Response フェーズ- レスポンスをエンコードしてブラウザに送信します。

于 2013-12-05T10:17:47.627 に答える