Я недавно перенес свое приложение JSF (с использованием простых лиц) с glassfish 3.1 на сервер tomcat7.Ранее передача значения перечисления в виде строки в управляемые методы bean-компонента через атрибут actionlistener
работала (без необходимости преобразователя для преобразования строки в перечисление), но теперь она завершается с javax.el.MethodNotFoundException
.
Страница JSF:
<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) {
...
}
Сообщения журнала:
javax.el.MethodNotFoundException: /_newLOB.xhtml @ 85,111 action = "# {lobController.create ('CAR')}": метод не найден: d432.xontrollers.LOBController@15b2cec.create (java.lang.Строка) в 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: atFilter (ApplicationFilter: atg).primefaces.webapp.filter.FileUploadFilter..java: 210)
Редактировать
Это начинает работать, если я изменяю метод управляемого компонента следующим образом:
public void create(String type) {
Type type = Type.valueOf(type);
...
}
Использование Primefaces 3.1 с JSF 2.1.6 на Tomcat 7.0.14