Исключение JSF Tomcat 7 PropertyNotFoundException

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