2011-08-07 16 views
4

JSFページにinputTextがあり、JavaScriptカレンダーポップアップが添付されています。 条件付きで、inputText disabledプロパティをtrueとfalseに設定しています。無効にした場合のInputText値はnullです

disabled = trueを設定し、JSF値をデータベースに書き込むと、inputTextの値はnullになります。これはdisabled = trueが原因だと私は信じています。

disabled = trueでもinputTextボックスに値を保持する方法はありますか?

私はJSF 1.1を使用しています。

答えて

3

別の回避策は、フォームを送信する際、一時的にこの入力を有効にすること、そしてモデルが更新された後、再びそれを無効にします(単なるHTMLのように)真=無効。同じIDで隠れた入力を使用していくつかの解決策がありましたが、残念ながら私は正確にどのように動作するのか覚えていません。

2

あなたは読み取り専用=真の代わりに、試してみてください

+0

readonlyをtrueにすると、カレンダーポップアップウィンドウから、ユーザーはinputTextフィールドに日付値を選択できます。 – user75ponic

+0

多分あなたは無効にしたいものと、無効にしてはならないものを明確にする必要があります... – Tristan

+0

条件に基づいて、私はinputTextを無効にしたいと思います。 InputTextには、ユーザーが日付を選択するためのポップアップカレンダーが添付されています。 inputTextを読み取り専用にすると、ユーザーはポップアップカレンダーから日付を選択できます。理想的には、私はinputTextを変更しないようにしたいと思います。あなたが述べたように、無効にするとjsfページで値がnullになります。 – user75ponic

2

ブラウザはHTML 4.0.1 spec次のようである:

成功した制御が提出のための "有効" です。

...省かテキスト... disabledある

  • コントロールが成功することはできません。

無効なフォームコントロールは、フォームの一部として送信されません。

JSFコンポーネントrendererは、isDisabled() == trueが見つかった場合、Apply Request Valuesフェーズの値を処理しないでください。 HTML render kit docから

レンダラは、デコード動作を実装することを選択した場合のいずれかの属性の値が等しい場合、それは、レンダリングされるコンポーネントの「無効化」と「読み取り専用」属性を参照する必要がありますが大文字小文字を無視する場合は、文字列 "true"(引用符なし)を使用すると、デコードメソッドは何も行いません。

は、要求が相が最初に実行されます(あなたが#{param.foo}式にそれらを結合していない限り - どのようなセキュリティ上の考慮事項に注意)、これらのブール値の評価はあなたのフォームの送信には何の影響を受けることができない値適用しますので。

フォームデザインと提出戦略では、これらの制約を考慮する必要があります。

1

disabled = trueまたはreadonly = trueを設定すると、JSFメカニズムは値を送信(または処理)しません。それはDBにナル値を書く理由です。

解決策として、変数に値を格納し、disabled = trueというプロパティでinputTextに表示する必要があります。

関連する問題