1

ここに簡単な質問があります。私が尋ねているのは、ここでもグーグルでも答えが見つからないからです。

IceFaces3.1を使用しています。

JavaBeanからの入力テキストを入力しています。属性disabled="true"がある場合にのみ機能します。

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

<h:inputText value="#{PageCode.quantity}" disabled="false"/>

そして、Javaコード(どこかでフォームと呼ばれます):

this.setQuantity(1);

値は含まれていません。デバッグしたのでCSSではなく、null値があります。

しかし、私がそれを次のように変更した場合:

 <h:inputText value="#{PageCode.quantity}" disabled="true"/>

できます。しかし、私はそれを編集するためにそれを有効にする必要があります...

どうしてそれが可能でしょうか?

4

1 に答える 1

3

どうやらあなたsetQuantity(1)は間違った瞬間に電話をしました。

無効にしない場合、は<h:inputText>モデル値の更新フェーズ中に送信された値を設定します。したがって、モデル値の更新フェーズの前に手動で設定した場合(たとえば、バリデーターまたは値変更リスナー内の検証フェーズ中に)、後で送信された値によってオーバーライドされます。コンポーネントが無効になっている場合、送信された値は設定されません。これはあなたが見ている症状を説明しています。

モデル値の更新フェーズのsetQuantity(1)の呼び出しアクションフェーズ中に必ず呼び出す必要があります。

valueChangeListener最も一般的に発生する初心者の間違いに基づいて、あなたは古い値に興味がない間に実際にメソッドで仕事をしたと思います。あなたはそれをすべきではありません。<f:ajax listener>代わりに使用する必要があります。

参照:

于 2012-11-30T12:59:56.757 に答える