1

我正在使用 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 控件,并且除了这个之外,所有其他设置器都在工作。我只是注意到它实际上似乎非常简短地设置了文本,但立即消失了。我检查了该页面上的所有代码,我几乎可以肯定没有其他设置器覆盖它。有谁知道这里发生了什么?

更新:
这似乎不是与“阶段”相关的问题,因为此事件正在INVOKE_APPLICATION阶段中处理。另请注意,我遇到了与 jsf 相同的问题h:inputTextarea

4

1 回答 1

1

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

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

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

希望这对遇到此问题的其他人有所帮助。

于 2012-03-01T22:15:21.390 回答