托pipebean和后台bean之间的区别

我在几个论坛中遇到了“托pipebean”和“backing bean”这两个术语。 许多人认为两者是相同的。 但是,似乎有一点区别。 任何人都可以帮助我理解这两个术语之间的确切区别吗?

改变我最初的答案 – 两者之间没有任何有意义的区别。 本教程指出,随后的bean被声明为托pipe的bean。 所以,总结一下:

  • 支持bean是没有上下文的类
  • 一个托pipebean是支持bean,只要它被声明为与JSF托pipebean工具一起使用。

我从来没有真正使用过术语“支持bean”,因为我没有发现它的用处。 所以你最好只使用“托pipebean”。 请注意,在JSF 2.0(和CDI)中有@ManagedBean – 所以你的bean是一个托pipebean。

BalusCbuild议“backing bean”是定义,“managed bean”是实例。 虽然这可能是JSF创build者最初的想法,但我不认为值得支持它。 例如CDI和spring对于“bean定义”和“bean实例”没有不同的含义。

JSF 2.0规范中只提到了“backing bean”这个术语,没有任何定义。 除此之外,还提到了“支持bean类”,这可能意味着“支持bean”!=“支持bean类”,这带来了更多的困惑。

所以得出结论 – 对我来说两者是可以互换的,而且我会坚持只使用“托pipe的豆子”

什么是托pipeBean?

由JSF实现pipe理的JavaBean对象称为托pipebean。 托pipebean描述了如何创build和pipe理一个bean。 它与bean的function无关。

什么是背豆?

备份bean是与页面中使用的UI组件相关联的JavaBeans组件。 后台Beanpipe理将UI组件对象的定义与执行特定于应用程序的处理和保存数据的对象分开。 backing bean定义了与页面上使用的UI组件相关联的属性和处理逻辑。 每个backing-bean属性都绑定到组件实例或其值。 Backing Bean还定义了一组执行组件function的方法,例如validation组件的数据,处理组件触发的事件以及在组件激活时执行与导航相关的处理。

备份Bean和托pipeBean之间有什么区别?

Backing Beans只是一个惯例,JSF Managed Beans的一个子types,它有着非常特殊的用途。 Backing Bean没有什么特别之处,除了使用它之外,它与其他的pipe理bean不同。

MB :托pipeBean; BB :背豆

1) BB :一个支持bean是一个表单引用的bean。

MB :托pipebean是已经使用JSF(在faces-config.xml中)注册的支持bean,它在需要时由JSF自动创build(并且可选地初始化)。

托pipebean的优点是JSF框架将自动创build这些bean,可以使用在faces-config.xml中指定的参数来初始化它们。

2) BB :Backing Bean只能在请求范围内定义

MB :由JSF创build的托pipebean可以存储在请求,会话或应用程序范围内

备份Bean应该在请求范围内定义,与特定页面以一对一的关系存在,并保存所有页面特定的事件处理代码。 在现实世界中,几个页面可能需要在后台共享相同的后台bean。 支持bean不仅包含视图数据,还包含与该数据相关的行为。

Backing Bean是与JSF UI绑定的任何bean。 而托pipebean是任何bean

简单的说,

你作为开发者做:

 @ManagedBean(name="managedBean") @RequestScoped public class BackingBean { // ... } 

JSF作为beanpipe理框架在下面覆盖:

 BackingBean managedBean = new BackingBean(); externalContext.getRequestMap().put("managedBean", managedBean); 

所以,backing bean是你开发的具体类,通常绑定到视图上,而managed bean是具体实例,它是在bean的pipe理框架按需创build和放置在所需的范围内的,并在EL中由#{managedBean}提供。 你永远不需要自己创build并把它放在范围内。 如果你这样做了,那么框架pipe理的bean就没有办法了。

CDI @Named和Spring @Component基本上和JSF @ManagedBean

要了解更多有关JSF,CDI和Spring等beanpipe理框架如何查找和创build托pipebean的信息,以下故障排除工具应深入了解: 识别并解决javax.el.PropertyNotFoundException:Target Unreachable 。

也可以看看:

  • JSF MVC框架中的MVC是什么组件?
  • JSF控制器,服务和DAO
  • JSFpipe理的bean命名约定

http://docs.oracle.com/javaee/5/tutorial/doc/bnaqm.html说;

一个典型的JavaServer Faces应用程序包含一个或多个支持bean,每个支持bean都是一个JavaServer Facespipe理bean,与特定页面中使用的UI组件关联。 托pipebean是JavaBeans组件(请参阅JavaBeans组件),您可以使用configurationBean中描述的托pipebean设施进行configuration。 本节介绍在应用程序中创build,configuration和使用支持bean的基本概念。

http://docs.oracle.com/javaee/6/tutorial/doc/bnaqm.html没有提到“backing bean”。

我会说backing bean是严格用于UI目的的一个bean,也就是说,在jsp文件中被引用。 毕竟,所有由JSF容器pipe理的bean都是被pipe理的bean,但是可能有不同的上下文。 JSF:ManagedBean,处理业务逻辑的好地方?

受pipe理的Bean由容器pipe理(实例化和销毁)。

备份Bean是作为数据模型备份视图的托pipebean。

Backing Bean是一种Managed Bean。 Managed Bean是一个对象(即一个类的实例),由一个容器创build(这就是为什么它被称为托pipe),当然,该对象有一个类,如果你觉得它,你可以创build该类的实例在m = new MyManagedBean()中,注意他们有什么注释,只是它将是一个Not-So-Managed-Bean,或者至less不是由一个容器pipe理,而是由您pipe理

支持bean是一种托pipebean(正如Santosh所说:约定),通常使用JSF requestScope(但是在一些像ADF这样的框架中,甚至有一个指定的作用域,仅用于支持名为backingBeanScope的bean – 你将永远不会猜到) 。

是的…被称为BackingBeans的jsf托pipebean的风格被用来绑定UIComponents和编写ActionListeners,同时让我们说“模型bean”的味道会在会话范围内,例如,保存你的数据

我花了一个很好的(昂贵的)JSF课程。 我所学到的只是在http://www.avromroyfaderman.com/2008/07/from-backing-bean-to-managed-bean/中解释的内容。;

也许这种差异不是理论差异或术语的词源,但它确实是build立你的架构的一个非常实用的方法,特别是如果你是一个有多个开发人员的大型项目的一部分和/或需要保持大量的代码很长一段时间。 基本上这个想法是,你把你的用户界面业务逻辑托pipe豆。 支持bean是稀疏的,只是支持页面本身。

从这个链接JSF – 托pipe豆

托pipeBean:

Managed Bean是一个在JSF中注册的常规Java Bean类。 换句话说,Managed Beans是一个由JSF框架pipe理的java bean。

从此链接为网页创build和使用备份Bean :

支持豆:

在JSF中,支持bean是主要用于提供UI逻辑并pipe理Web层和应用程序业务层(类似于数据传输对象)之间的数据的JavaBean。 通常,每个JSF页面都有一个支持bean。 backing bean包含页面上使用的UI组件的逻辑和属性。

注意:

对于在应用程序启动时可用的支持bean,您可以将其注册为具有名称和作用域的托pipebean

托pipeBean:

托pipebean是已经使用JSF注册(在faces-config.xml中)或使用注释的支持bean。 Managed Bean在需要时由JSF自动创build(并可select初始化)。

如果您在应用程序中使用Managed Bean,则必须在JSF页面中使用以下语法来设置或获取值表单bean

 <h:inputText value="#{user.name}"/> 

支持豆:

包含Web表单的一些或全部组件对象的bean。 这种bean被称为Web窗体的支持bean。

在使用辅助bean时,需要将表单上的组件连接到bean上的组件。 您为此使用绑定属性

例:

 <h:inputText binding="#{myForm.myComponent}" .../> 

观察我们如何获取或设置Backing bean的值。

备份Bean应该在请求范围内定义,与特定页面以一对一的关系存在,并保存所有页面特定的事件处理代码

希望对某人有用。