在应用请求阶段期间处理了RichFaces的TreeSelectionChangeEvent

时间:2013-11-27 08:04:19

标签: jsf-2 tree richfaces selectionchanged

在从RichFaces 3迁移到4期间,我们面临rich:tree元素的意外行为。我们注册了一个selectionChangeListener,它应该包含一个带有h:inputText字段的facelet,这取决于新选择。 facelet应该显示所选节点的详细信息。

第一次选择时,此功能正常。但是,当我们选择相同类型的另一个节点时,包含相同的facelet(在这种情况下,由于节点类型相同,这是正确的),但是前一个节点的值显示在facelet中,即使该对象也是如此保持组件的值是正确实例化的。

检查日志文件显示在应用请求阶段(2)期间处理了TreeSelectionChangeEvent。在该阶段,保持文本字段值的对象会正确更新,但在更新模型阶段(4)期间会更改回旧值。

关于此问题的

一般问题是:即使树的immediate属性设置为 false ? (我原本希望在调用应用程序阶段(5)期间处理事件)并且,如果这是正确的行为,我们如何避免旧值恢复的问题?

提前感谢您的建议。

1 个答案:

答案 0 :(得分:1)

根据我的理解,在Apply Request阶段,执行了listener-event并更新了当前渲染视图中也表示为h:inputFields的字段?

在更新模型阶段,原始h:inputText之外的数据会覆盖已经进行的更改吗?

无法在本地测试:使用switchType="ajax" rich:tree - 组件提供两个属性

  • execute
  • render

您希望facelet-part重新渲染,而不是要执行的输入值(因为这是侦听器已经执行的操作)。

假设您在ajax开关类型中使用rich:tree,是否尝试设置execute="@this"render="<theFaceletComponent>"

如果未找到组件标识,请使用:#{rich:clientId('<theFaceletComponent>')}作为绝对标识符。

希望,这有助于......