2012-03-14 13 views
3

アプリケーション用の設定パネルを作成したいと思います。アプリケーションは、設定値をデータベーステーブルに保存します。設定パネルを使用して設定を表示し、値を変更します。私はこの方法で値を表現したい:特定のselectOneMenuオプションが選択されているときにinputTextを表示する方法は?

enter image description here

enter image description here

この方法では、ユーザーが唯一の固定値を入力することができるようになります。カスタム値を入力するためにユーザーに変更を加えたいと思います。このように:

enter image description here

私はオプションcustomselectOneMenuを作成したいです。ユーザーがcustomを選択すると、selectOneMenuinputTextフィールドに置き換えられ、そこではカスタム値を入力できます。 SAVEボタンはデータをデータベースに保存します。ページリロードなしでこれは可能ですか?多分AJAXで?

これはどのように実装できますか?

答えて

3

<f:ajax>を使用すると、現在のオプションが"custom"の場合はいつでも<h:inputText>と表示されます。

<h:selectOneMenu value="#{bean.type}"> 
    <f:selectItem itemValue="one" itemLabel="Option one" /> 
    <f:selectItem itemValue="two" itemLabel="Option two" /> 
    <f:selectItem itemValue="three" itemLabel="Option three" /> 
    <f:selectItem itemValue="custom" itemLabel="Define custom value" /> 
    <f:ajax render="input" /> 
</h:selectOneMenu> 
<h:panelGroup id="input"> 
    <h:inputText value="#{bean.customType}" rendered="#{bean.type == 'custom'}" required="true" /> 
</h:panelGroup> 
+0

非常に良い答え!これで私の必要なコードは完成しましたか? –

+2

はい。バッキングBeanコードは十分に明白でなければなりません。上記の例では、 'type'と' customType'の2つの 'String'プロパティを想定しています。もちろん、Bean内で項目を動的に事前入力する必要がある場合は、 ''を使用することもできます。 'h:selectOneMenu'の使い方の詳細については、タグのwikiページをチェックしてください:http://stackoverflow.com/tags/selectonemenu/info – BalusC

+0

最後にもう1つの質問:ユーザーがデータを入力した後、JSFページが値を渡す方法マネージドBeanをデータベースに更新するには?私はフォームが必要だと思います。次のようなものがあります:http://pastebin.com/Fq19q5z9 –

関連する問題