У меня проблема, когда я использую следующий раскрывающийся список на моей странице. В деталях, когда я использую selectOneMenu и нажмите на кнопку, указанную ниже метода save никогда не вызывается. Он просто просматривает все методы, которые я определил только с событием f:. Как только я удалю selectOneMenu с моей страницы и снова нажмите кнопку сохранения, мой метод вызывается без каких-либо проблем.Поверхности selectOneMenu блокирует вызов метода в Bean
<p:selectOneMenu id="unitList"
value="#{myController.userDTO.selectedUnitDTO}">
<f:selectItems value="#{myController.unitList}" var="unitList"
itemValue="#{unitList}" itemLabel="#{unitList.name}" />
</p:selectOneMenu>
Выпадающий список загрузки данных с помощью следующего метода (Примечание. UnitList является initialiazed)
public List<UnitDTO> getUnitList() {
return unitList;
}
Мой боб имеет следующие аннотации @ManagedBean @ViewScoped
и это моя кнопка:
<p:commandButton id="save" action="#{myController.save}" value="SAVE" />
Дополнительная информация, я заметил, что когда я нажимаю кнопку сохранения, сеттер selectedUnitDTO никогда не вызывается.
Primefaces Версия: 6,0
У вас есть 'Конвертер' для вашего' UnitDTO'? Похоже, валидация и/или преобразование терпят неудачу, поэтому ваш сеттер никогда не вызывается. – Tomek
Нет, я не использую конвертер. Тип объекта, который извлекается из unitList, совпадает с типом selectedUnitDTO, который я хочу установить. – Stephan
Поместите на страницу 'h: messages', и вы, скорее всего, увидите ошибку (скорее всего, в журнале тоже). В этом случае вам нужен ** конвертер. ItemValue - это строка, когда она отправляется обратно на сервер, а не объект. Попробуйте использовать простой jsf selectOneMenu, ту же проблему! – Kukeltje