Kri*_*hna 61 jsf javabeans managed-bean backing-beans
我在几个论坛中遇到了"托管bean"和"支持bean"的术语.很多人认为两者都是一样的.但是,似乎有一点点差异.任何人都可以帮助我理解这两个术语之间的确切区别吗?
Boz*_*zho 64
改变我的初步答案 - 两者之间没有任何有意义的区别.该教程说,后续bean后来被声明为托管bean.所以,总结一下:
我从来没有真正使用过"支持bean"这个词,因为我发现没用.所以你最好只使用"托管bean".请注意,在JSF 2.0(和CDI)中,您有@ManagedBean- 所以您的bean是托管bean.
BalusC建议"支持bean"是定义,"托管bean"是实例.虽然这可能是JSF创作者的最初想法,但我认为不值得支持它.例如,CDI和spring没有"bean定义"和"bean实例"的不同术语.
JSF 2.0规范只提到了几次"支持bean"一词,没有任何定义.除此之外,它提到"支持bean类",这可能意味着"支持bean"!="支持bean类",这带来了进一步的混乱.
总而言之 - 对我而言,两者都是可以互换的,我坚持只使用"托管bean"
San*_*osh 17
什么是Managed Bean?
由JSF实现管理的JavaBean对象称为托管bean.托管bean描述了如何创建和管理bean.它与bean的功能无关.
什么是Backing Bean?
支持bean是与页面中使用的UI组件关联的JavaBeans组件.Backing-bean管理将UI组件对象的定义与执行特定于应用程序的处理和保存数据的对象分开.辅助bean定义与页面上使用的UI组件关联的属性和处理逻辑.每个backing-bean属性都绑定到组件实例或其值.Backing bean还定义了一组执行组件功能的方法,例如验证组件的数据,处理组件触发的事件以及在组件激活时执行与导航相关的处理.
Backing Bean和Managed Bean之间有什么区别?
Backing Beans只是一种惯例,是JSF Managed Beans的一种子类型,具有非常特殊的用途.Backing Bean没有什么特别之处,除了它的用法之外,它与其他任何托管bean都不同.
MB:Managed Bean; BB:支持Bean
1) BB:支持bean是由表单引用的任何bean.
MB:托管bean是一个已经在JSF中注册的支持bean(在faces-config.xml中),并且在需要时由JSF自动创建(并可选地初始化).
托管bean的优点是JSF框架将自动创建这些bean,可选择使用您在faces-config.xml中指定的参数初始化它们.
2) BB:只应在请求范围内定义Backing Beans
MB:由JSF创建的托管bean可以存储在请求,会话或应用程序范围内.
Backing Beans应该在请求范围内定义,与特定页面以一对一的关系存在,并保存所有页面特定的事件处理代码.在实际场景中,几个页面可能需要在幕后共享相同的支持bean.支持bean不仅包含视图数据,还包含与该数据相关的行为.
简单的说,
你作为开发人员做:
@ManagedBean(name="managedBean")
@RequestScoped
public class BackingBean {
// ...
}
Run Code Online (Sandbox Code Playgroud)
作为bean管理框架的JSF在幕后做了:
BackingBean managedBean = new BackingBean();
externalContext.getRequestMap().put("managedBean", managedBean);
Run Code Online (Sandbox Code Playgroud)
因此,支持bean是由您开发并通常绑定到视图的具体类,托管bean是具体实例,它是由bean管理框架按需创建并置于所需范围内,并可#{managedBean}在EL中获得.您永远不需要自己创建并将其放入范围.如果你这样做那么就没有框架管理bean的方法.
CDI @Named和Spring @Component与JSF基本上做同样的事情@ManagedBean.
要了解有关如何在JSF,CDI和Spring等bean管理框架中查找和创建其托管bean的更多信息,以下故障排除程序应提供深入的洞察:识别和解决javax.el.PropertyNotFoundException:Target Unreachable.
| 归档时间: |
|
| 查看次数: |
70273 次 |
| 最近记录: |