2012-10-16 61 views
0

将包含整数属性的bean绑定到窗体时,当显示窗体时,该字段的值为0,这是正常的,因为这是整数默认值。 但是当我删除字段的0,并把重点放在下一个表单字段(setImmediate =真),我得到一个讨厌的例外:Vaadin窗体绑定异常

com.vaadin.data.Property$ConversionException: java.lang.reflect.InvocationTargetException 
    at com.vaadin.data.util.MethodProperty.convertValue(MethodProperty.java:695) 
    at com.vaadin.data.util.MethodProperty.setValue(MethodProperty.java:664) 
    at com.vaadin.ui.AbstractField.setValue(AbstractField.java:495) 
    at com.vaadin.ui.AbstractTextField.changeVariables(AbstractTextField.java:242) 
    at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.changeVariables(AbstractCommunicationManager.java:1460) 
    at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1404) 
    at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1329) 
    at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:761) 
    at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:318) 
    at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at com.vaadin.data.util.MethodProperty.convertValue(MethodProperty.java:692) 
    ... 22 more 
Caused by: java.lang.NumberFormatException: For input string: "" 
    at java.lang.NumberFormatException.forInputString(Unknown Source) 
    at java.lang.Integer.parseInt(Unknown Source) 
    at java.lang.Integer.<init>(Unknown Source) 
    ... 27 more 

我当然可以通过设置字段作为必需避免这种情况但那不是我想要的。我对Vaadin相当陌生,所以我错过了什么?

谢谢

+0

它看起来像,你期待一个数字,但系统给你一个字符串回来(似乎是空字符串),它不能被转换为数字。 – Jaiwo99

+0

尝试使用'Integer'而不是'int'来绑定您的数字字段。没有主类型,但Object!尝试从表单中向我们展示一些代码。 – Jaiwo99

回答

0

也许使用整数包装和textField.setNullRepresentation( “”);将帮助

+0

这是一种可能性,但它意味着你必须调整你的bean的所有数值(int或float)属性。这是我想避免 – user1469130

+0

这不应该是解决方案,如果TextField得到一个值'null',它也显示'“null”' – Jaiwo99