2016-07-18 1 views
0

Вот мой selectOneMenu:Как показать нулевое значение в p: SelectOneMenu ТОЛЬКО, когда указанное значение является нулевым в компоненте поддержки?

<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> 

Значение по умолчанию показывает в этом selectOneMenu как пользователь открывает вид, это имя обработчика человека дела открывает пользователь. Теперь, некоторые случаи имеют null как значение в базе данных. В этих случаях значение - это имя первого обработчика в списке обработчиков. Это, очевидно, неверно, поскольку отображаемое значение не должно быть именем человека обработчика, потому что рассматриваемый случай не имеет обработчика, но имеет нуль в столбце обработчика строки case.

Теперь, как я могу показать некоторый текст, например. «Выбрать обработчик» КОГДА свойство обработчика null на объекте case?

+0

Дубликат http://stackoverflow.com/q/11360030 – BalusC

ответ

1

Чтобы показать специальную опцию «Выбор обработчика», если значение нулевой, просто добавьте дополнительно

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

к вашему selectOneMenu.

Чтобы показать этот особый вариант, только если ваше значение равно null, вы можете добавить полностью идентичный второй selectOneMenu, но без специальной опции и дать им оба противоположных атрибута рендеринга. Результирующая проблема с идентификатором может быть решена путем включения selectOneMenus, например. <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

Это было бы почти там, но нуль-вариант не должен быть оказаны, если значение свойства обработчика не является нулевым. –

+1

Обновленный ответ, чтобы рассмотреть ваш комментарий. – irieill

Смежные вопросы