java - 使用 BigDecimalConverter 的 Primefaces 输入会忽略空字符串

标签 java jsf primefaces

设置: 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/

相关文章:

css - 按钮(引导按钮)的颜色在 netbeans 中没有改变?

sorting - Primefaces 数据表排序和过滤在 rowSelect 之前不起作用

java - IBM i (AS400) JVM - 是否可以定义 JVM 查找 .jar 文件的位置?

java - 如何从 JFileChooser(JAVA Swing) 禁用文件操作、文件选择和过滤面板?

java - JSF2 : Handling RMI Connection from WebListener to ManagedBeans

jsf - 有条件渲染的输入组件不更新值

javascript - 在页面卸载时,我想停止导航,当我完成对话框上的工作时,它应该导航

java - 为什么命令按钮操作监听器不起作用?

java - Spring Security iusse 运行应用程序时,创建 bean myUserDetailsS​​ervice 时出错

Java 运算符 ? :