1、ManagedBean命名
建议ManagedBean命名规则采用*MB.java,让大家一看就知道MB结尾的class都是Managed Bean。当然,有特定code guide line的话,另当别论。
2、建议使用Anotation
采用Anotation来标识该Class是否Managed Bean,scope,可以大大提高开发人员的开发效率,且具备统一的Managed Bean name。例如:
@ManagedBean
@SessionScoped
public class DemoMB implements Serializable{ … }
3、外部资源的访问,如service、其它Managed Bean等
如果Managed Bean需要访问service,其它Managed Bean等,则建议使用@ ManagedProperty进行注入,如:
@ManagedProperty(value="#{demoService}")
private Service demoService;
4、充分利用Managed Bean 2个比较有用的生命周期方法
1)@PostConstruct, Managed Bean实例创建完毕之后,会调用@PostConstruct标注的方法,在该方法中可以处理Managed Bean的初始化工作;
2)@PreDestroy,Managed Bean实例销毁前,会调用@PreDestroy标注的方法,在该方法中可以清理相关资源。
5、合理使用Scope
每个Managed Bean都有其Scope,不同的Scope适用于不同的应用场景。因此,我们一定要合理使用Scope。对于scope话题,我会另作讨论。
6、如何强制初始化Managed Bean
网上看到很多类似how to initialize a managed bean in force的话题,其实Jsf并没有给我们提供强制初始化Managed Bean的处理方法,但是我们可以变通实现。
首先,我们要搞清楚Jsf何时会初始化Managed Bean?当xhtml页面中有某个EL使用到了该Bean或者该Bean被另外正在初始化bean依赖的时候,jsf就会自动给我们创建该Managed Bean的实例,并加入Managed Bean的生命周期管理。因此,只要我们可以编程实现EL表达式求解即可实现对其它Managed Bean的调用,及Managed Bean的初始化。如:
ELContext elContext = context.getELContext( );
Application application = context.getApplication( );
String userid = (String) application.evaluateValueExpressionGet(context,
"#{userBean.userid}",String.class);
此段代码即实现了对userBean.userid的求解,假设此时userBean并未初始化,那么通过调用表达式的求解,jsf会自动做2件事情:
1)初始化userBean;
2)获取userid的值。
分享到:
相关推荐
- **使用EL表达式引用Bean**:通过`#{beanName.propertyName}`语法可以在JSF页面中引用Bean的属性。 - **数据绑定**:可以直接将表单字段与Bean的属性进行绑定,从而简化数据处理流程。 - **事件监听**:可以定义...
在JSF中,可以使用`@ManagedBean`或`@Named`注解来声明一个Bean,然后通过EL(Expression Language)在页面上引用它。例如: ```java import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped...
- 使用 `@ManagedBean` 和 `@ViewScoped` 或其他范围注解在 JSF 中定义 Managed Bean。 - 在 Spring 配置文件中,通过 `@Component` 或 `@Service` 注解将这些 Managed Bean 注册到 Spring 容器,并使用 `@Scope` ...
Flux 可以实现为 JSF 2 Managed bean,它允许用户从他们的 UI 组件调度或管理工作流。 将flux.jar 部署到您的本地maven 存储库 mvn install:install-file -DgroupId=flux -DartifactId=flux -Dversion=8.0.10 -...
5. **Managed Bean注解支持**:JSF2支持使用`@ManagedBean`和`@ViewScoped`等注解来声明和管理Bean,简化了代码并增强了可读性。 6. **CDI集成**:JSF2与Java EE的Contexts and Dependency Injection (CDI)框架集成...
2. **JSF Managed Beans**:JSF中的Managed Bean是应用程序的主要组件,它们负责处理用户的请求并更新视图。在JSF的配置文件(如`faces-config.xml`)中,我们定义Managed Bean的名称、范围和实现类。当与Spring结合...
- 编写后台Bean(Managed Bean)处理业务逻辑,实现数据的CRUD操作。 - 连接MySQL数据库,编写SQL语句实现数据的增删改查。 5. **测试**:单元测试、集成测试和系统测试,确保所有功能正常工作。 6. **部署**:...
`@ManagedBean`注解标识这个类是一个JSF Managed Bean,`@SessionScoped`表示这个Bean的实例将在整个会话期间保持活跃。`login()`方法是当用户点击登录按钮时调用的,其中`validateCredentials()`是验证用户名和密码...
通过JSF受管Bean操作数据库
2. **Managed Bean**:Managed Bean是JSF中的核心组件,用来存储和处理数据。 3. **Navigation Handler**:负责处理页面间的跳转。 4. **Converter和Validator**:Converter转换数据类型,Validator验证用户输入。 ...
要在JSF Managed Bean中使用Spring bean,我们需要使用`@ManagedProperty`注解,并指定Spring bean的ID。例如,在JSF的Managed Bean `UserBean`中注入`UserService`: ```java import javax.faces.bean.Managed...
在JSF与Spring整合的情况下,JSF的Managed Bean可以直接使用由Spring管理的Bean。当JSF在自己的上下文中找不到所需的Bean实例时,它会去Spring的ApplicationContext中查找。这种方式允许我们利用Spring的强大功能,...
通过配置,可以让JSF2的Managed Bean自动从Spring容器中获取,实现依赖注入。 3. **数据绑定**:JSF2的EL表达式可以直接引用Spring Beans中的属性,实现视图与模型的数据绑定。 4. **服务层和持久层的整合**:...
7. **使用CDI**:虽然例子中使用了JSF的 Managed Bean,但现代的JSF应用更多地倾向于使用CDI(Contexts and Dependency Injection)进行组件管理。你可以将Managed Bean替换为CDI Bean,并利用它的特性,如依赖注入...
通过定义一个带有JSF注解(如`@ManagedBean`和`@ViewScoped`)的Java类,你可以创建一个Managed Bean,其中包含处理用户请求的方法。这些方法可以调用JPA操作,处理数据,并通过EL(表达式语言)将结果传递给视图。 ...
本系列资料包括《JSF入门》、《JSF Web应用实战开发》和《JSF2》,旨在帮助初学者快速掌握JSF的核心概念和技术。 《JSF入门简体中文版》是学习JSF的基础,它涵盖了JSF的基本架构、组件库、生命周期和事件处理等方面...
在JSF2中,我们可以通过在`@ManagedBean`注解上使用`@ViewScoped`或`@SessionScoped`等来控制bean的生命周期,进而影响导航。例如,如果一个bean是视图作用域,那么当导航发生时,该bean会被销毁;如果是会话作用域...
6. **绑定组件和Bean**:在JSF页面中,通过EL(Expression Language)将JSF组件与Managed Bean的属性绑定。例如,`<h:inputText value="#{bean.property}" />`。 7. **配置 faces-config.xml**:此文件定义了JSF的...