如何设置icefaces inputTextarea控件的值

时间:2012-02-28 00:54:52

标签: jsf icefaces-1.8

我使用Icefaces 1.8.2和ice:inputTextarea控件,我无法弄清楚为什么没有在这里设置值:

的.jsp

<ice:inputTextarea binding="#{easp$RecordSearch.repairRemark}" id="repairRemark"
  partialSubmit="true" style="height:40px; width:100%;" />

的.java

//bean
private HtmlInputTextarea repairRemark = new HtmlInputTextarea();
public HtmlInputTextarea getRepairRemark() {
    return repairRemark;
}
public void setRepairRemark(HtmlInputTextarea hit) {
    this.repairRemark = hit;
}

....
public String button3_action() {
    ...

    //code that sets value
    String myVal = "new value";
    this.repairRemark.setValue(myVal);

    ...
    return null;
}

设置值的代码是我知道被触发的按钮点击事件的一部分,因为我设置了其他几个Icefaces控件,除了这个之外所有其他setter都正常工作。我只是注意到它实际上似乎非常短暂地设置文本,但立即消失。我检查了该页面上的所有代码,我几乎可以肯定没有其他的setter覆盖它。有谁知道这里发生了什么?

更新
它似乎不是一个阶段&#34;相关问题,因为此事件正在INVOKE_APPLICATION阶段处理。另外需要注意的是,我遇到了与jsf相同的问题h:inputTextarea

1 个答案:

答案 0 :(得分:1)

我找到了原因和解决方案。原因是触发此点击事件的ice:commandButton位于ice:dataTable的列中。 ice:dataTable有一个ice:rowSelector,似乎在点击按钮时会导致额外的服务器请求。当我删除ice:rowSelector时,问题就消失了。

解决方案是将toggleOnClick="false"toggleOnInput="false"添加到ice:rowSelector。我添加了两个,以防万一。

http://res.icesoft.org/docs/v1_8_2/tld/ice/rowSelector.html

希望这有助于遇到此问题的其他任何人。