设置: Primefaces 3.4.2、JSF2
我有一个包含 4 个输入字段的表单,可在触发 onblur 时发布数据。
描述 我将值放入所有 4 个输入字段中,并且效果正常。然后我开始一一删除这些值。对于具有 BigDecimalConverters 的所有字段,我无法删除这些值,一旦我离开该字段并开始在下一个字段中删除该值,该值就会返回到该字段。
我在 IE 和 Chrome 的开发者工具中使用了网络选项卡,我可以看到帖子发送了空值,然后它得到一个响应,表示该字段中应该有不同的数字。
有人知道什么会导致这种行为吗?
最佳答案
您遇到的问题归结为以下几点:
BigDecimal bg = new BigDecimal("");
上面的行将抛出一个java.lang.NumberFormatException
,这又会导致转换错误。这就是字段值因字段验证/转换失败而被保留的原因。
根本原因是空白默认情况下不会作为 null 提交到服务器。它们作为空字符串提交。可以通过在 web.xml 中将上下文参数 javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
设置为 true
来自定义此行为。这将导致空字段作为 null
发送,并且不会触发转换错误。
相关:
关于java - 使用 BigDecimalConverter 的 Primefaces 输入会忽略空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20214119/