隐式转换导致参数类型与Tomcat 7不匹配

时间:2012-09-24 08:46:14

标签: jsf-2 tomcat7 el

与tomcat 6一起使用。

查看:<h:inputText>映射到bean中的double。

我看了,除非我是盲目的,否则我们依靠Tomcat提供的EL。

当在Tomcat 7上运行时,它会抛出:

  

严重:javax.faces.FacesException:   java.lang.IllegalArgumentException:参数类型不匹配   javax.faces.FacesException:java.lang.IllegalArgumentException:   参数类型不匹配   com.sun.faces.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl.java:142)

     

引起:javax.faces.component.UpdateModelException:   java.lang.IllegalArgumentException:参数类型不匹配   javax.faces.component.UIInput.updateModel(UIInput.java:853)at at   javax.faces.component.UIInput.processUpdates(UIInput.java:735)at   javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1242)     在   javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1242)     在   javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1242)     在javax.faces.component.UIForm.processUpdates(UIForm.java:281)at   javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1242)     在   javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1242)     在   javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:1231)     在   com.sun.faces.lifecycle.UpdateModelValuesPhase.execute(UpdateModelValuesPhase.java:78)     在com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)... 30多个

     

引起:java.lang.IllegalArgumentException:参数类型不匹配     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(未知来源)at   sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)at   java.lang.reflect.Method.invoke(未知来源)at   dk.bording.inside.util.reflect.Reflection.set(Reflection.java:442)at   dk.bording.inside.adapter.entity.MapAdapter.invoke(MapAdapter.java:87)     在   dk.bording.inside.adapter.entity.MapAdapter.put(MapAdapter.java:50)     在javax.el.MapELResolver.setValue(MapELResolver.java:94)at   com.sun.faces.el.DemuxCompositeELResolver._setValue(DemuxCompositeELResolver.java:255)     在   com.sun.faces.el.DemuxCompositeELResolver.setValue(DemuxCompositeELResolver.java:281)     在org.apache.el.parser.AstValue.setValue(AstValue.java:207)at   org.apache.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:257)     在   org.jboss.weld.el.WeldValueExpression.setValue(WeldValueExpression.java:64)     在   com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:131)     在javax.faces.component.UIInput.updateModel(UIInput.java:818)...   40多个

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我怀疑这是由特定字段接收的输入引起的。 JSF2将根据输入的推断dataType进行隐式转换。即如果该字段收到0作为您所谓的double字段的输入,它仍会尝试将其转换为Long。根据此thread on the same issue中的建议,您应使用<f:convertNumber/>转换器或将字段绑定到java.lang.Number