jsf - a4j动作触发,但页面渲染逻辑触发后

时间:2011-06-04 17:53:03

标签: ajax jsf richfaces myfaces ajax4jsf

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

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

1 个答案:

答案 0 :(得分:0)

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