0

将richfaces 3.1.5 与myfaces/jsf 一起使用,并注意当我调用a4j 操作时,在它执行之前,它所在的整个facelet 正在重新渲染——我正在远程调试,当我单击a4j 链接时,我首先看到了我的phaseListener被调用(这是有道理的),但随后我也看到了我的 bean getter 中的所有逻辑,这些逻辑在包含 a4j 操作链接的 facelet 中触发,然后最终执行操作,然后重新渲染。一些 getter 中的逻辑很昂贵,所以我不希望它们被不必要地调用 - 我只想要动作点击 -> 调用动作 -> 重新渲染区域,而不是这个动作循环循环 -> 重新渲染整个页面 ->调用动作 -> 重新渲染现在正在发生的区域。

不知道这是否重要,但我的 a4j 操作没有映射到 actionListener,而只是一个调用返回 null 的 String 方法的操作。谢谢你的帮助。

4

1 回答 1

0

不能保证 getter 在 JSF 中只会被调用一次。您应该将昂贵的调用移出 getter 或在调用 getter 中的逻辑之前进行检查。一般来说,不建议将昂贵的逻辑放在 getter 中(在 JSF 的上下文中)。

于 2011-06-04T20:54:03.443 回答