2014-01-10 7 views
0

Я использую Primefaces и JSF для разработки этого интерфейса. Моя проблема в том, что один из моих selectonemenus никогда не устанавливает привязку к значению «selectedGroup», поэтому второе выпадающее меню никогда не заселено. Мой бэк-бэнд вызывается для «обновления» второго selectonemenu, но слушатель этого ajax не вызывается и не выбирается группой, когда-либо установленной. Этот код фактически идентичен витрине для "Select". Я даже подтвердил, что код витрины работает с нуля (что я не сомневался), но не вижу, как моя ситуация отличается от этого примера.Основные/JSF: selectOneMenu значение не установлено, ajax прослушиватель не называется

Другие вопросы о stackoverflow по этой теме указывают на то, что что-то было не учтено, но ни одно из этих предложений не соответствовало моей проблеме.

У меня есть два selectOneMenus, вот так.

<h:form id="outerForm"> 

    <p:panel id="outerPanel"> 

     <p:panelGrid id="outerPanelGrid"> 
      <h:outputLabel for="groupSelection" value="Group: "/> 
      <p:selectOneMenu id="groupSelection" value="#{myBean.selectedGroup}" > 
       <p:ajax update="commandSelection" 
         listener="#{myBean.handleGroupSelection}" /> 
       <f:selectItem itemLabel="---Please Select Group---" itemValue=""/> 
       <f:selectItems var="group" value="#{myBean.groups}" 
           itemLabel="#{group.name}" itemValue="#{group.name}" /> 
      </p:selectOneMenu> 

      <h:outputLabel for="commandSelection" value="Command: "/> 
      <p:selectOneMenu id="commandSelection" value="#{myBean.command}"> 
       <f:selectItems value="#{myBean.commandStringsList}"/> 
      </p:selectOneMenu> 
     </p:panelGrid> 
    </p:panel> 
</h:form> 

Эта страница отображается в «центре» части моего шаблона макета, как так ..

<ui:define id="content" name="content"> 
    <p:panel id="contentPanel" style="float:left; border:none"> 
     <ui:include src="#{anotherBean.currentView}.xhtml"/> 
    </p:panel> 
</ui:define> 

Подложка боб ДЕЛАЕТ использовать некоторые классы данных содержат некоторые из данных, которые заселены , но я думал, что делаю все правильно, чтобы отобразить его в виде. Тем не менее, я использую Strings.

Кто-нибудь видит, что мне не хватает? По крайней мере, действительно ли этот xhtml?

Следует также упомянуть, что эта страница работала до того, как я создал и использовал шаблон. В основном, я отображал его на вкладке tabview с помощью ui: include в теле index.xhtml. Хотя я и не заметил изначально, эта страница перестала работать после того, как я включил шаблон (плохое тестирование с моей стороны, я знаю).

+0

Просто уточнить: ваш идентификатор формы является внешним. у вас нет вложенных форм, правильно? – 757071

+0

Правильно, ui: define существует в композиции ui: и макет шаблона также не содержит никаких форм. – ThatsAMorais

+0

Перейдите по http://stackoverflow.com/a/2120183/757071 и http://stackoverflow.com/a/16125396/757071, точки в ответе могут помочь. – 757071

ответ

0
<f:selectItems var="group" value="#{myBean.groups}" 
    itemLabel="#{group.name}" itemValue="#{group.name}" /> 

Вы не можете указать selectItems таким образом. перевод должен быть двунаправленным. используйте конвертер!

<f:selectItems var="group" value="#{myBean.groups}" 
    itemLabel="#{group.name}" itemValue="#{group}" 
    converter="groupConverter"/> 
+0

Только тот OP не хочет '# {group}', он хочет '# {group.name}', который выглядит как 'String': никакого преобразования не требуется – kolossus

+0

Правильно, kolossus, group является строкой. Даже сейчас я никогда не выяснял, что с этим происходит, сохранив все мои последние изменения в отдельной ветке и перезагрузив голову, медленно добавляя изменения, которые я хотел. После этого мне не удалось снова столкнуться с проблемой. – ThatsAMorais

+0

'# {myBean.selectedGroup}' является строкой? (не является 'selectedGroupName' лучшим идентификатором?) –

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