Richfaces:排序列时更新值

时间:2013-09-16 06:48:33

标签: jsf richfaces seam

<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 中有一个列,用户可以在其中输入金额和过滤/排序。

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

当我点击列标题时,会调用 setDouble_amt(Double double_amt) double_amt 此处 0.0 ,或者来自另一条记录。

我在这里遗漏了什么?请帮忙。

2 个答案:

答案 0 :(得分:0)

我会开始在所有元素中设置“id”属性(特别是在a4j:支持,我不认为这解决了你的问题,但我过去的经历很糟糕)。

答案 1 :(得分:0)

这似乎与此处描述的问题类似:

JSF - UIInput component with no input sets String Property to empty string

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

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

希望这能帮助遇到同样问题的人。