2012-04-05 1 views
6

ドロップダウンリストp:selectonemenuとチェックボックスがある場合、チェックボックスをオンにすると、selectonemenuを特定の値に設定します。ユーザーはそれを変更したくないので、selectonemenudisabled属性をtrueに設定します。しかし、無効にすると、facescontext.getcurrentinstance().getexternalcontext().getrequestparametermap()を実行したときにその値がリクエストパラメータマップ内に表示されず、このマップにその値が必要です。これを回避する方法はありますか?JSF:コンポーネントを無効にすると、その値はリクエストマップパラメータに入りません。回避策はありますか?

私は、フォームアトリビュート値を取得するためにリクエストマップパラメータを使用するレガシーサーブレットシステムにfont-endを書きます。

+2

コンポーネントが無効な場合、ブラウザはコンポーネント値をサーバーに送信しないため、表示されません。 "readonly"パラメータを探します。 –

+0

@AdrianMitev:残念ながら、JSFコンポーネント 'h:selectonemenu'は' readonly'属性を持っていますが、primefacesコンポーネント 'p:selectonemenu'はありません –

答えて

8

Adrian Mitevがコメントで指摘したように、selectBooleanCheckboxコンポーネントを無効にすると、フォーム送信時にその値が投稿されなくなります。

しかし、これを行うには、チェックボックスと同じマネージドBeanプロパティに値を設定できる非表示の入力フィールドがあります。

<h:inputHidden id="checkDisabled" value="#{managedBean.someValue}" /> 

JavaScriptを使用すると、チェックボックスが無効のときにこの非表示入力の値を設定できます。

+2

これは具体的にはチェックボックスには当てはまりませんが、すべてのHTML入力要素とボタン一般に。 'disabled =" true "'ならば、name = valueは要求パラメータとして送られません。これは[HTML仕様](http://www.w3.org/TR/html401/interact/forms.html#h-17.12.1)のとおりです:* "無効なコントロールは成功しません" * – BalusC

+0

@BalusC: JSFコンポーネントは 'name'属性を持っていないので(' name'を設定して 'id'を設定すると思います)、' の 'id'属性を設定すると、 > 'コンポーネントを' selectonemenu'と同じにすると、この例外が発生します 'コンポーネントID cmbxFgnFormNumberは既にビュー内に見つかりました' –

+4

IDは名前として生成されます。 HTMLソースを確認してください。新しい問題については、無効なチェックボックスに別のIDを指定するか、代わりにプレーンな 'を使用してください(フォームIDの前にはありません)。 – BalusC

関連する問題