为什么JSF多次调用getter
假设我指定了一个outputText组件,如下所示: <h:outputText value="#{ManagedBean.someProperty}"/> 如果在someProperty调用getter for时打印一条日志消息并加载页面,则很容易注意到每个请求多次调用getter(在我的情况中是两次或三次): DEBUG 2010-01-18 23:31:40,104 (ManagedBean.java:13) - Getting some property DEBUG 2010-01-18 23:31:40,104 (ManagedBean.java:13) - Getting some property 如果someProperty计算的值昂贵,则可能存在问题。 我在Google上搜索了一下,发现这是一个已知问题。一种解决方法是包括检查并查看是否已经计算出: private String someProperty; public String getSomeProperty() { if (this.someProperty == null) { this.someProperty = this.calculatePropertyValue(); } return this.someProperty; } 这样做的主要问题是,您获得了大量样板代码,更不用说您可能不需要的私有变量了。 有什么替代方法?没有太多不必要的代码,有没有办法实现这一目标?有没有办法阻止JSF以这种方式运行? 感谢您的输入!