Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Play Framework 2(Java)中将空值绑定到数字字段_Java_Forms_Playframework 2.0_Databinder - Fatal编程技术网

在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

哈哈,太棒了:)。我知道它不会像我做的那样复杂!这样的案例错误有时几乎不可能自己发现。谢谢你的帮助,它当然工作得很好!哈哈,太棒了:)。我知道它不会像我做的那样复杂!这样的案例错误有时几乎不可能自己发现。谢谢你的帮助,它当然工作得很好!