在从RichFaces 3迁移到4期间,我们面临rich:tree
元素的意外行为。我们注册了一个selectionChangeListener
,它应该包含一个带有h:inputText
字段的facelet,这取决于新选择。 facelet应该显示所选节点的详细信息。
第一次选择时,此功能正常。但是,当我们选择相同类型的另一个节点时,包含相同的facelet(在这种情况下,由于节点类型相同,这是正确的),但是前一个节点的值显示在facelet中,即使该对象也是如此保持组件的值是正确实例化的。
检查日志文件显示在应用请求阶段(2)期间处理了TreeSelectionChangeEvent
。在该阶段,保持文本字段值的对象会正确更新,但在更新模型阶段(4)期间会更改回旧值。
一般问题是:即使树的immediate
属性设置为 false ? (我原本希望在调用应用程序阶段(5)期间处理事件)并且,如果这是正确的行为,我们如何避免旧值恢复的问题?
提前感谢您的建议。
答案 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>')}
作为绝对标识符。
希望,这有助于......