1

我有一些表单,我希望能够将一些数字字段留空,但我从Form.bindFromRequest(). 这似乎是一个常见的要求,但经过数小时的搜索,我找不到任何关于此的文档。不过,我仍然希望我错过了一些明显的东西!

我做了一些挖掘,发现 Play 使用 Spring 的DataBinder类来进行实际的绑定。该类非常复杂,允许我为我的字段设置自定义@InitBinder活页夹,如果我使用 Spring,我可以向我的控制器添加一个方法,以使用CustomNumberEditor. 但是,Form除了设置允许的字段外,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: ""

那么,还有其他方法可以让活页夹允许空数字字段吗?

4

1 回答 1

1

将您的字段声明为Long而不是long原始类型,空值将被视为null.

于 2013-03-06T22:09:31.530 回答