Я недавно обновил свое веб-приложение до JSF 2.0 (MyFaces 2.0.9) и использовал tomcat 6 (контейнер Servlet 2.5).
Ранее (до обновления до JSF 2) в файлах JSP у меня были такие записи, как:
<h:selectOneMenu id="country"
value="#{myBean.countrySelectionControl ? (empty myBean.restrictedCountry ? '' : myBean.restrictedCountry) : myBean.countryCode}"
onchange="submit()"
disabled="#{myBean.countrySelectionControl}">
<f:selectItem itemValue="" itemLabel="------------------Select-----------------" />
<f:selectItem itemValue="here" itemLabel="Here" />
<f:selectItem itemValue="there" itemLabel="There" />
</h:selectOneMenu>
, но с момента обновления такие операторы вызывают ошибки, как показано ниже:
ОШИБКА: org.ajax4jsf.webapp.BaseXMLFilter - Исключение в цепочке фильтров
javax.servlet.ServletException: /jsp/CrudUser.jsp(79,9) '# {myBean.countrySelectionControl? (пустой myBean.restrictedCountry? '': myBean.restrictedCountry): myBean.countryCode} 'Недопустимый синтаксис для операции над множествами
Теперь я знаю, что могу просто переместить логику обратно в Backbean, но перед тем, как сделать это, я хотел проверить, есть ли другая альтернатива и узнать, что такое «лучшая практика» в таких случаях.