Jav*_*tar 5 jsf managed javabeans
我有一个带有表单的jsf页面,其中包含一个outputtext.outputtext组件的值是从辅助bean(或托管bean)调用的.我知道当我将其编码为#{MyBean.myString}时,Jsf将其重命名并调用getMyString()方法.然而,奇怪的是,当我将断点放到此组件的getter方法时,我看到它在页面呈现期间被调用了两次.outputtext在ah:form中,它是唯一绑定到backingbean的组件.我的意思是,jsf在第一次进入getter方法时应该得到它是如此奇怪,但它需要两次进入getter方法.你能解释一下jsf中这种行为的原因是什么吗?
任何帮助将不胜感激,祝福,巴里斯
Bal*_*usC 16
正如其名称已经自我描述的那样,getter只是用于检索数据的纯粹目的.JSF不会缓存此数据.它会在需要时调用它.调用getter的成本实际上是无法实现的 - 除了你做的不仅仅是返回数据,例如每次点击数据库,这个逻辑应该被移出getter或者变成延迟加载.
在表单提交的情况下,第一次get调用通常在验证阶段被触发,以检查是否有任何初始值,以便JSF可以处理值更改事件.第二个调用通常在渲染响应阶段触发,以在视图中显示模型值.
您可能会发现本文也很有用,可以了解有关JSF生命周期的更多信息.您可能会发现此答案对于了解有关在辅助bean中进行预处理/初始化的方法的更多信息非常有用.
| 归档时间: | 
 | 
| 查看次数: | 6027 次 | 
| 最近记录: |