1

アプリケーションにICEFaces 1.8を使用しています。次のようなグリッドにいくつかの SelectInputText があります。

<ice:panelGrid columns="4">             
            <ice:selectInputText id="txtId"                             
                         valueChangeListener="#{employeeBean.searchIdListener}" partialSubmit="true"></ice:selectInputText>
            <ice:selectInputText id="txtFirstName"
                         valueChangeListener="#{employeeBean.searchFirstNameListener}" partialSubmit="true"></ice:selectInputText>
            <ice:selectInputText id="txtLastName"
                         valueChangeListener="#{employeeBean.searchLastNameListener}" partialSubmit="true"></ice:selectInputText>
            <ice:selectInputText id="txtPhoneNumber"
                         valueChangeListener="#{employeeBean.searchPhnNbrListener}" partialSubmit="true"></ice:selectInputText>
        </ice:panelGrid>

上記の SelectInputText のいずれかの値を変更すると、上記の 4 つの ValueChangeListener メソッドがすべて実行されていることがわかります。なぜですか?

SelectInputText の値が変更されたメソッドだけが実行されるべきではありませんか?

これについて教えてください。

4

2 に答える 2

2

<ice:selectInputText>初期値がNULLであり、最初の部分的または完全な送信により、ページから送信されるEMPTY 文字列が発生する可能性があります。

これを避けるために空の文字列でselectInputTextを初期化するか、JSF 2.xで以下を追加できます。

<context-param>
    <param-name>
         javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
    </param-name>
    <param-value>true</param-value>
</context-param>

また、Icefaces に追加するために、その部分的な送信は少し混乱します。これは、部分的な Ajax/DOM レンダリングを使用した完全な Ajax 送信に似ています。icefaces 1.8 がページ上で複数のコンポーネントを実行する場合がいくつかありますが、データテーブル列、panelSeries などでは回避されます。

于 2013-04-24T02:10:30.523 に答える
1

これは、partialSubmit属性の意図とvalueChangeListener.

たとえば、送信ボタンをクリックしてフォームを送信すると、管理プロパティ値にバインドされたフォーム内のすべてのコンポーネント、またはマネージド Bean メソッドが割り当てられたフォーム内のすべてのコンポーネントにvalueChangeListener、サーバーによって送信、処理、および検証された要求値があります。検証フェーズが成功すると仮定すると、送信されたこれらの値はUPDATE_MODEL、各 valueChangeListener メソッドが呼び出されるフェーズに渡されます。

基本的に、このメソッドはClick や Change イベントのようなアプリケーション イベントとしては表示されません。

ただし、Ajax 送信を使用すると、JSF フォーム内のどのコンポーネントを送信するか、クライアントで応答を受信した後に新しい値を表示するためにどのコントロールを再レンダリングするかを制御できます。ただし、この属性partialSubmitは単に Ajax リクエストと連携して動作し、パフォーマンス上の理由から ViewState とリクエストのサイズを最小限に抑えます。機能的には、このpartialSubmit属性だけでは実際の効果はありません。

于 2013-04-23T12:19:26.970 に答える