集成JSF和spring
使用JSF、Spring和Hibernate实现一个简单的登录屏幕。我在Spring中编写了服务和数据层bean,并将它们与Hibernate集成 我在JSF中定义了一个注册(新用户创建)屏幕,屏幕上有两个字段userid和password,并将它们连接到一个托管Bean。(Bean名称:Users)这里这个Bean也是域类 现在,在JSF视图中单击create按钮,我需要调用服务Bean方法(即Springbean)。为此,我有两种方法集成JSF和spring,jsf,ooad,Jsf,Ooad,使用JSF、Spring和Hibernate实现一个简单的登录屏幕。我在Spring中编写了服务和数据层bean,并将它们与Hibernate集成 我在JSF中定义了一个注册(新用户创建)屏幕,屏幕上有两个字段userid和password,并将它们连接到一个托管Bean。(Bean名称:Users)这里这个Bean也是域类 现在,在JSF视图中单击create按钮,我需要调用服务Bean方法(即Springbean)。为此,我有两种方法 在UsersManagedBean中编写一个方法,该方法
谢谢不要将您的域类设置为jsf托管bean 通常,我遵循的是将域类和其他支持UI的属性封装在表单bean中(当场景复杂时,将其他直接实体作为托管bean中的属性),并将其包含在托管bean中 Spring服务被注入到托管bean中,并在操作时将形式为bean/实体bean的服务传递给Spring服务,以进行业务/用例处理和持久化(dao/存储库) 模板代码:
@ManagedBean
public class Bean{
private Entity entity;//or
private FormBean formBean;
@Inject private Service service;
public String doAction(){
//error processing from service layer and UI message handling
service.process(entity);//or
service.process(formBean);
return Navigation.Constant;
}
}
托管bean的目的应该是收集视图数据并将其传递给服务进行处理。如果将域/实体类设置为托管bean,则会将其与JSF库耦合,这不利于重用。根据设计原则SRP(单一责任原则),类应该有一个责任,在这种情况下,它将有更多的责任,因此如上所述不是好的实践
你提到的第2点更好
希望这有帮助