2011-05-16 80 views
0

我遇到一个PropertyNotFoundException从Tomcat 6升级到Tomcat 7。这之后的消息我得到:JSF的Tomcat 7 PropertyNotFoundException

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以前的2.2默认不支持类似的方法调用。那么为什么它在使用EL 2.1的Tomcat 6上工作是超出我自己的。可能它在/lib文件夹中有一个自定义EL实现。

但是,由于Tomcat 7.0支持EL 2.2,所以在Tomcat 7.0上它肯定可以正常工作。唯一的先决条件是您的web.xml被声明符合Servlet 3.0规范,以便EL 2.2功能将被触发。

确保您web.xml符合的Servlet 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>