栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么请求facelet时多次调用BackingBean方法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么请求facelet时多次调用BackingBean方法?

Bean的getter在那里就 可以 从视图侧 访问
模型数据。可以多次调用它们。通常一或两次,但可以长到几百倍,特别是当还使用

UIData
组件或其他属性比
value
(如
rendered
disabled
等)。通常这没有害处,因为它只是一个简单的方法调用,通常不要在吸气剂中进行昂贵的数据加载逻辑或计算。预加载/初始化通常是在bean构造函数和/或bean操作方法中完成的。实际上,getter应该仅
返回 数据(如有必要,还应进行 延迟加载 )。

如果

getApplication().getKunden(getNameFilterPattern());
执行的任务非常昂贵,则应将其移至bean构造函数,bean
@PostConstruct
方法,bean初始化块或bean操作方法,或在getter中引入 延迟加载 模式。这是一个示例,显示了如何执行所有操作:

public class Bean {    private String nameFilterPattern;    private List<Kunde> kunden;    // Load during bean construction.    public Bean() {        this.kunden = getApplication().getKunden(getNameFilterPattern());    }    // OR load during @PostConstruct (will be invoked AFTER construction and resource injection.    @PostConstruct    public void init() {        this.kunden = getApplication().getKunden(getNameFilterPattern());    }    // OR during bean initialization (this is invoked BEFORE construction and will apply to ALL constructors).    {        this.kunden = getApplication().getKunden(getNameFilterPattern());    }    // OR during bean action method (invoked from h:commandlink/Button).    public String submit() {        this.kunden = getApplication().getKunden(getNameFilterPattern());        return "navigationCaseOutcome";    }    // OR using lazy loading pattern in getter method.    public List<Kunde> getKunden() {        if (this.kunden == null)  this.kunden = getApplication().getKunden(getNameFilterPattern());        }        return this.kunden;    }

在您的特定情况下,我认为这是

@PostConstruct
(如果
nameFilterPattern
要从
GET
请求参数获取),或者只是bean操作方法(如果
nameFilterPattern
要从
POST
表单输入字段获取)是合适的。

要了解有关JSF生命周期的更多信息,您可能会发现这篇自我实践文章很有用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/509682.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号