[ http://issues.apache.org/jira/browse/MYFACES-736?page=comments#action_12355920 ]
Keijo Nurmes commented on MYFACES-736: -------------------------------------- I was testing 1.1.1RC3 and noticed that h:inputText with f:convertNumber didn't work any more. As Sylvain described, it throws 'Conversion Error "XXX: Error during model data update.' Stack trace shows that code breaks in org.apache.myfaces.el.ValueBindingImpl.setValue This is easy to reproduce with sample1.jsp in simple example. Just throw <f:convertNumber/> inside <h:inputText id="number1"... What seems to happen is: In javax.faces.component.UIInput.validate the submittedValue is converted to Object convertedValue = getConvertedValue(context, submittedValue); In org.apache.myfaces.renderkit._SharedRendererUtils. findUIOutputConverter If you have convertNumber, converter is retrieved by Converter converter = component.getConverter(); and is javax.faces.convert.NumberConverter If you don't have convertNumber the converter is retrieved by ValueBinding vb = component.getValueBinding("value"); Class valueType = vb.getType(facesContext); facesContext.getApplication().createConverter(valueType); in my application the backing bean contains field of type short so javax.faces.convert.ShortConverter is returned. The type of convertedValue (in UIInput) is java.lang.long if NumberConverter is used and java.lang.short if Short.Converter is used. If the field type in backing bean is short and convertedValue is long, then later org.apache.myfaces.el.ValueBindingImpl.setValue can't find a setter to the field. I run out of time now, so I continue debugging later if necessary. (Hope somebody can solve this before :) ) Regards, Keijo Stack trace from simple example ......... javax.faces.el.EvaluationException: Cannot set value for expression '#{calcForm.number1}' to a new value of type java.lang.Long at org.apache.myfaces.el.ValueBindingImpl.setValue(ValueBindingImpl.java:304) at javax.faces.component.UIInput.updateModel(UIInput.java:226) at javax.faces.component.UIInput.processUpdates(UIInput.java:165) at javax.faces.component.UIForm.processUpdates(UIForm.java:85) at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:428) at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:428) at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:153) at org.apache.myfaces.lifecycle.LifecycleImpl.updateModelValues(LifecycleImpl.java:277) at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:81) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:106) > Number converter not working with Number > ---------------------------------------- > > Key: MYFACES-736 > URL: http://issues.apache.org/jira/browse/MYFACES-736 > Project: MyFaces > Type: Bug > Components: Implementation > Versions: Nightly > Reporter: Sylvain Vieujot > > If the backing bean setter takes a Number argument (Integer, Float, ...), the > converter fails : > Conversion Error "XXX: Error during model data update. > If the setter uses a primitive type, then it works fine. > This worked with the trunk version from September 30. > There must have been a change that broke it since. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira