首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >托管bean和会话bean之间的区别

托管bean和会话bean之间的区别
EN

Stack Overflow用户
提问于 2011-07-23 00:50:06
回答 1查看 13.5K关注 0票数 21

假设我有一个实体类,Car。

代码语言:javascript
运行
复制
@Entity
public class Car

我的集成开发环境允许我从实体类自动生成会话bean,因此我最终得到了一个CarFacade

代码语言:javascript
运行
复制
@Stateless
public class CarFacade

我还可以生成JSF托管bean

代码语言:javascript
运行
复制
@ManagedBean     
@RequestScoped
public class RegistrationController

我可以理解实体类和其他bean之间有意义的区别,但是无状态会话bean和托管bean有什么区别呢?我读到无状态会话bean用于实现在实体上操作的业务逻辑,托管bean用于与基于web的前端进行交互,方法是让网页调用托管bean上的方法,并让托管bean调用会话bean上的业务方法。

因此,在我的示例中,注册将以网页将调用的+ RegistrationController (String carRegistration)方法为特色。反过来,RegistrationController将实例化一辆汽车,并在会话bean上调用+create(汽车汽车),这将持久化它。

这是正确的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-23 01:06:01

JSF托管bean是实体(模型)、JSF页面(视图)和企业bean (业务服务)之间的粘合剂(控制器)。

因此,是的,您对JSF页面的理解基本上是正确的,即JSF页面应该调用托管bean的操作方法,该方法又应该将模型和操作进一步委托给业务服务,并最终根据服务调用的结果处理导航结果。

但是,在模型应该如何使用和传递方面,您并不完全正确。通常,您将模型设置为托管bean的属性,这样就可以将其绑定到表单的输入元素,并最终将其原封不动地传递给业务服务。

例如。

代码语言:javascript
运行
复制
<h:inputText value="#{registrationController.car.make}" />
<h:inputText value="#{registrationController.car.model}" />
<h:inputText value="#{registrationController.car.year}" />
<h:commandButton value="Save" action="#{registrationController.save}" />

使用

代码语言:javascript
运行
复制
private Car car;
private @EJB CarFacade carFacade;

public RegistrationController() {
    this.car = new Car();
}

public String save() {
    carFacade.create(car);
    return "someoutcome";
}

// ...
票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6793351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档