将richfaces 3.1.5与myfaces/jsf一起使用,请注意,当我调用a4j操作时,在它执行之前,它所在的整个facelet都会被重新渲染-我正在远程调试,当我单击a4j链接时,我第一次看到我的phaseListener被调用(这很有意义),但是,我也看到了我的bean getter中的所有逻辑,这些逻辑位于包含a4j操作链接的facelet中,然后启动,最后执行操作,然后重新调用。一些getter中的逻辑很昂贵,所以我不希望它们被不必要地调用——我只希望操作点击->调用操作->重新发布区域,而不是现在正在发生的操作点击->重新发布整个页面->调用操作>重新发布区域的循环。
不知道这是否重要,但我的a4j操作没有映射到actionListener,而只是一个调用返回null的String方法的操作。谢谢你的帮助。
不能保证getter在JSF中只被调用一次。您应该将昂贵的调用从getter中移出,或者在调用getter中的逻辑之前进行检查。一般来说,不建议在getter中放入昂贵的逻辑(在JSF的上下文中)。