在Play Framework 2(Java)中将空值绑定到数字字段
我有一些表单,希望能够保留一些数字字段为空,但从在Play Framework 2(Java)中将空值绑定到数字字段,java,forms,playframework-2.0,databinder,Java,Forms,Playframework 2.0,Databinder,我有一些表单,希望能够保留一些数字字段为空,但从表单.bindFromRequest()中得到“无效值”错误。这似乎是一个常见的要求,但经过数小时的搜索,我找不到任何关于这方面的文档。不过,我还是希望我错过了一些明显的东西 我做了一些挖掘,发现Play使用Spring的DataBinder类进行实际绑定。该类非常复杂,允许我为字段设置自定义绑定,如果我使用Spring,我可以向控制器添加一个@InitBinder方法,以使用CustomNumberEditor完全按照我想要的方式设置绑定器。然而
表单.bindFromRequest()
中得到“无效值”错误。这似乎是一个常见的要求,但经过数小时的搜索,我找不到任何关于这方面的文档。不过,我还是希望我错过了一些明显的东西
我做了一些挖掘,发现Play使用Spring的DataBinder
类进行实际绑定。该类非常复杂,允许我为字段设置自定义绑定,如果我使用Spring,我可以向控制器添加一个@InitBinder
方法,以使用CustomNumberEditor
完全按照我想要的方式设置绑定器。然而,除了设置允许的字段外,Play Framework的表单对象似乎不允许访问DataBinder。因此,绑定器尝试将空字符串转换为长字符串,这会产生NumberFormatException
:
Failed to convert property value of type 'java.lang.String' to required type 'long'
for property 'unitPriceExVAT';
nested exception is java.lang.NumberFormatException: For input string: ""
所以,是否有其他方法让活页夹允许空数字字段?将字段声明为Long
而不是Long
原语类型,空值将被视为null
将字段声明为Long
而不是Long
原语类型和空值将被视为null
哈哈,太棒了:)。我知道它不会像我做的那样复杂!这样的案例错误有时几乎不可能自己发现。谢谢你的帮助,它当然工作得很好!哈哈,太棒了:)。我知道它不会像我做的那样复杂!这样的案例错误有时几乎不可能自己发现。谢谢你的帮助,它当然工作得很好!