#jsf #tomcat #el
#jsf #tomcat #el
Вопрос:
Я сталкиваюсь с исключением PropertyNotFoundException после обновления с tomcat 6 до tomcat 7. Это сообщение, которое я получаю:
value="#{someHandler.result.someList[1].doSomething(someDTO.id).value}": Property 'doSomething' not found on type com.someproject.SomeClass
Кто-нибудь может объяснить, почему? Я использую jsf 2 (реализация myfaces), и да, doSomething не является свойством, но значение есть. Он отлично работает с tomcat 6. Я получаю это исключение после нажатия кнопки (которая заставила бы страницу обновиться после выполнения некоторого доступа к базе данных). При первом вызове форма отображается нормально!
Спасибо!
Ответ №1:
doSomething(someDTO.id)
EL prior 2.2 по умолчанию не поддерживает подобные вызовы методов. Итак, почему это работает на Tomcat 6, который использует EL 2.1, вне моего понимания. Вероятно, в его /lib
папке была пользовательская реализация EL.
Однако, поскольку Tomcat 7.0 поддерживает EL 2.2, он определенно должен нормально работать на Tomcat 7.0. Единственным предварительным требованием является то, что ваше web.xml
объявление соответствует спецификации Servlet 3.0, чтобы были запущены функции EL 2.2.
Убедитесь, что ваш web.xml
сервлет соответствует версии 3.0, а не версии 2.5 или более поздней:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- config here -->
</web-app>