我有一个由网格和一些细节字段组成的JSF表单。详细信息字段包含网格中第一行的数据。我有一个支持bean,它监听网格行选择并更新详细信息字段的支持bean以表示新值。问题出现了:我根据需要更新了详细信息字段(在ApplyRequestValuesPhase
中调用了侦听器),但后来JSF框架在UpdateModelValuesPhase
中将旧值重新赋予它们。
我的问题是如何修复它?如何从网格选择更改事件中为某些JSF组件分配新值?
注意:这与JSF component doesn't update if changes came from grid click中的情况大致相同,但我现在更清楚地看到问题,这就是我发布新问题的原因。
答案 0 :(得分:1)
在应用请求值阶段调用侦听器是不正常的。也许您已将immediate="true"
设置在某个位置,这将导致在应用请求值阶段执行操作。您需要确保在调用操作阶段调用侦听器,该阶段在更新模型值阶段之后运行。设置immediate="false"
或完全删除属性,它已经是默认行为。
根据评论,您似乎确实在row selector上设置了immediate="true"
,您需要将其删除。