0
<rich:column sortBy="#{entity.double_amt}" filterBy="#{entity.double_amt}" >
    <h:inputText value="#{entity.double_amt}">
    <a4j:support event="onchange" reRender="entityTable" ajaxSingle="true" />
</rich:column>

我在rich:dataTable中有一个列,用户可以在其中输入 Amount 和过滤/排序。

如果用户没有输入double_amt,它将是空白的。
但是,如果我不输入任何内容,然后单击列标题对表格进行排序(或为过滤器键入任何内容),则 double_amt将默认为0.0。更糟糕的是,如果我在此表上有多个记录,则会将另一行的一个随机double_amt插入空行(而不是0.0)。

当我单击列标题时,会调用setDouble_amt(Double double_amt) ,这里的double_amt0.0,或者来自另一条记录的值。

我在这里错过了什么吗?请帮忙。

4

2 回答 2

0

我会开始在所有元素中设置“id”属性(特别是在 a4j:support 中,我认为这不能解决您的问题,但我过去在这方面有过不好的经历)。

于 2013-09-16T07:32:18.860 回答
0

它似乎类似于这里描述的这个问题:

JSF - 没有输入的 UIInput 组件将字符串属性设置为空字符串

但是,在我的问题中,我需要知道用户是否输入了0.0或根本没有输入任何内容。无论哪种方式,setter 都会传递0.0

我设法通过将 getter/setter 更改为字符串getDoubleAmt()setDoubleAmt(String doubleAmt))来解决问题,并检查提供的链接中输入的空字符串。如果它不为空,我会将双精度解析为原始字段(double_amt)。

希望这可以帮助面临同样问题的人。

于 2013-09-17T07:46:48.937 回答