2013-11-26 68 views
0

设置: Primefaces 3.4.2,JSF2Primefaces输入忽略空字符串

我有4输入的表单字段的帖子数据时的onblur被触发。

描述 我把值放入所有的4个输入字段,并按照它应该的工作。然后我开始逐个删除值。对于所有具有BigDecimalConverters的字段,我无法删除这些值,只要我离开字段并开始删除下一个字段,该值就会返回到字段。

我已经使用了网络选项卡中的开发工具IE和Chrome,我可以看到,帖子发出的空值,然后它变得respons说,应该有该领域的不同的数字。

有谁知道什么可能导致此行为?

+0

你能提供你的代码块?相关视图页面和托管bean代码,如果没有这些,就无法提供正确的答案。 –

+0

恐怕我不能那样做。它是一个庞大的遗留系统的一部分,不喜欢像它应该这样做的东西,所以它在java代码中生成几乎所有的服务器组件。但是我可以看到,输入之间唯一不同的是IntegerConverter和BigDecimalConverter,所以我希望有人遇到类似的问题。 – unzoomed

+0

数字是否为'198.23'? – kolossus

回答

2

您遇到的问题归结为以下几点:

BigDecimal bg = new BigDecimal(""); 

上面一行将抛出一个java.lang.NumberFormatException这又会导致转换错误。这就是为什么由于字段未通过验证/转换而保留字段值的原因。

的根本原因是空白,默认情况下不会被提交到服务器为空。他们被提交为空字符串。这种行为可以通过在web.xml中上下文参数javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL设置为true定制。这将导致空字段作为null发送并且不会触发转换错误。

相关:

+1

这正是我在我的(众多)环境中解决它的原因。如果它正在提交空字符串作为有效值,这将解决它。如果没有,则显示一些代码。 –