Java 迁移到tomcat后,将枚举值作为参数从JSF页面传递给bean方法失败
我最近将我的JSF应用程序(使用primefaces)从GlassFish3.1迁移到tomcat7服务器。以前通过Java 迁移到tomcat后,将枚举值作为参数从JSF页面传递给bean方法失败,java,jsf,tomcat,el,converter,Java,Jsf,Tomcat,El,Converter,我最近将我的JSF应用程序(使用primefaces)从GlassFish3.1迁移到tomcat7服务器。以前通过actionlistener属性将枚举值作为字符串传递给托管bean方法是有效的(不需要转换器将字符串转换为枚举),但现在由于javax.el.MethodNotFoundException而失败 JSF页面: 日志消息: javax.el.MethodNotFoundException:/_newLOB.xhtml@85111 action=“#{lobController.cr
actionlistener
属性将枚举值作为字符串传递给托管bean方法是有效的(不需要转换器将字符串转换为枚举),但现在由于javax.el.MethodNotFoundException
而失败
JSF页面:
日志消息:
javax.el.MethodNotFoundException:/_newLOB.xhtml@85111
action=“#{lobController.create('CAR')}”:未找到方法:
d432.1特朗尔斯。LOBController@15b2cec.create(java.lang.String)位于
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:110)
在javax.faces.component.UICommand.broadcast(UICommand.java:315)中
javax.faces.component.UIData.broadcast(UIData.java:1093)位于
javax.faces.component.UIData.broadcast(UIData.java:1093)位于
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
在
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
在
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
位于com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
位于javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
在
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
在
org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
在
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
在
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
编辑 如果我按如下所示更改托管bean方法,这将开始工作:
在Tomcat 7.0.14上使用Primefaces 3.1和JSF 2.1.6这是Tomcat EL实现中的一个缺陷。我已经为您报告了:。希望他们不会像我以前的报告那样挑剔 在他们修复之前,最好的办法是在您的WEB应用程序的
/WEB-INF/lib
中删除一份,并通过WEB.xml
中的以下条目告诉Mojarra使用它:
com.sun.faces.expressionFactory
com.sun.el.ExpressionFactoryImpl
更新:罚单中提到它已修复,将在7.0.27及以后更新
<h:form>
<h:outputLabel value="Title"/><br/>
<p:inputText value="#{lobController.current.title}"/>
<p:commandButton action="#{lobController.create('CAR')}" value="Post"/>
</h:form>
public void create(Type type) {
...
}
public void create(String type) {
Type type = Type.valueOf(type);
...
}