2016-07-18 2 views
0

は私のselectOneMenuです:ユーザーがビューを開くと、このselectOneMenuに示すpでnull値を表示する方法:SelectOneMenuは、その値がバッキングBeanでnullの場合のみですか?ここ

<h:form> 
    <p:selectOneMenu id="handlerSelect" value="#{caseController.case.handler}" 
     converter="omnifaces.SelectItemsIndexConverter" style="width:182px"> 
     <f:selectItems value="#{handlerController.findAllHandlers()}" 
      var="handlerSelect" itemLabel="#{handlerSelect.name}" 
      itemValue="#{handlerSelect}" /> 
     <p:ajax event="change"listener="#{caseController.changeHandler}" update="handlerSelect"/> 
    </p:selectOneMenu> 
</h:form> 

デフォルト値は、ユーザーが開く例ハンドラ人の名前です。現在、データベースの値としてnullがある場合があります。そのような場合、値はハンドラリスト内の最初のハンドラの名前です。これは明らかに間違っています。なぜなら、問題のケースにはハンドラの人はいないが、ケース行のハンドラの列にはnullがあるため、値がハンドラの人の名前であってはならないからです。

ここで、いくつかのカスタムテキストを表示するにはどうすればいいですか? "ハンドラを選択"ケースオブジェクトのハンドラプロパティがnullの場合は?

+0

http://stackoverflow.com/q/11360030 – BalusC

答えて

1

あなたの値がnullのある場合はちょうどあなたのselectOneMenuに加えて

<f:selectItem 
    itemLabel="Choose handler" 
    itemValue="#{null}" 
/> 

を追加し、特別な "ハンドラの選択" オプションを表示します。

あなたはallmost同一の第2 selectOneMenuを追加しますが、特別なオプションを使用せずに、それらに属性をレンダリングし、反対の両方を与えることができ、あなたの値は ヌルある場合にのみ、この特別なオプションを表示します。結果として得られるidの問題は、selectOneMenusを例えばで囲むことで解決できます。元のid属性を持つ <p:outputPanel />。ほとんどがあるだろう

<h:form> 
    <p:outputPanel id="handlerSelect"> 
    <p:selectOneMenu 
     value="#{caseController.case.handler}" 
     converter="omnifaces.SelectItemsIndexConverter" 
     style="width:182px" 
     rendered="#{caseController.case.handler eq null}" 
    > 
     <f:selectItem 
     itemLabel="Choose handler" 
     itemValue="#{null}" 
     /> 
     <f:selectItems 
     value="#{handlerController.findAllHandlers()}" 
     var="handlerSelect" 
     itemLabel="#{handlerSelect.name}" 
     itemValue="#{handlerSelect}" 
     /> 
     <p:ajax 
     event="change" 
     listener="#{caseController.changeHandler}" 
     update="handlerSelect" 
     /> 
    </p:selectOneMenu> 
    <p:selectOneMenu 
     value="#{caseController.case.handler}" 
     converter="omnifaces.SelectItemsIndexConverter" 
     style="width:182px" 
     rendered="#{caseController.case.handler ne null}" 
    > 
     <f:selectItems 
     value="#{handlerController.findAllHandlers()}" 
     var="handlerSelect" 
     itemLabel="#{handlerSelect.name}" 
     itemValue="#{handlerSelect}" 
     /> 
     <p:ajax 
     event="change" 
     listener="#{caseController.changeHandler}" 
     update="handlerSelect" 
     /> 
    </p:selectOneMenu> 
    </p:outputPanel> 
</h:form> 
+0

の重複はなく、ハンドラのプロパティの値がnullでない場合はnull-オプションは、レンダリングすべきではありません。 –

+1

コメントがあなたのコメントを考慮して更新されました。 – irieill

関連する問題