JSF預設會讀取faces-config.xml中關於Bean的定義,如果想要自行設置定義檔的名稱,我們是在web.xml中提供javax.faces.CONFIG_FILES參數,例如:
<web-app>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/beans.xml</param-value>
</context-param>
...
</web-app>
定義檔可以有多個,中間以 "," 區隔,例如:
/WEB-INF/navigation.xml,/WEB-INF/beans.xml
一個Bean最基本要定義Bean的名稱、類別與存活範圍,例如:
....
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>
onlyfun.caterpillar.UserBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
....
如果要在其它類別中取得Bean物件,則可以先取得javax.faces.context.FacesContext,它代表了JSF目前的執行環境物件,接著嘗試取得javax.faces.el.ValueBinding物件,從中取得指定的Bean物件,例如:
FacesContext context = FacesContext.getCurrentInstance();
ValueBinding binding =
context.getApplication().createValueBinding("#{user}");
UserBean user = (UserBean) binding.getValue(context);
如果只是要嘗試取得Bean的某個屬性,則可以如下:
FacesContext context = FacesContext.getCurrentInstance();
ValueBinding binding =
context.getApplication().createValueBinding(
"#{user.name}");
String name = (String) binding.getValue(context);
如果有必要在啟始Bean時,自動設置屬性的初始值,則可以如下設定:
....
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>
onlyfun.caterpillar.UserBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>name</property-name>
<value>caterpillar</value>
</managed-property>
<managed-property>
<property-name>password</property-name>
<value>123456</value>
</managed-property>
</managed-bean>
....
如果要設定屬性為 null 值,則可以使用<null-value/>標籤,例如:
....
<managed-property>
<property-name>name</property-name>
<null-value/>
</managed-property>
<managed-property>
<property-name>password</property-name>
<null-value/>
</managed-property>
....
當然,您的屬性不一定是字串值,也許會是int、float、boolean等等型態,您可以設定<value> 值時指定這些值的字串名稱,JSF會嘗試進行轉換,例如設定為true時,會嘗試使用Boolean.valueOf()方法轉換為boolean的 true,以下是一些可能進行的轉換:
型態 |
轉換 |
short、int、long、float、double、byte,或相應的Wrapper類別 |
嘗試使用Wrapper的valueOf()進行轉換,如果沒有設置,則設為 0 |
boolean 或 Boolean |
嘗試使用Boolean.valueOf()進行轉換,如果沒有設置,則設為 false |
char 或 Character |
取設置的第一個字元,如果沒有設置,則設為0 |
String 或 Object |
即設定的字串值,如果沒有設定,則為空字串new String("") |
您也可以將其它產生的Bean設定給另一個Bean的屬性,例如:
....
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>
onlyfun.caterpillar.UserBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>other</managed-bean-name>
<managed-bean-class>
onlyfun.caterpillar.OtherBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>user</property-name>
<value>#{user}</value>
</managed-property>
</managed-bean>
....
在上面的設定中,在OtherBean中的user屬性,接受一個UserBean型態的物件,我們設定為前一個名稱為user的UserBean物件。
分享到:
相关推荐
在部署包含JSF功能的Web应用到Tomcat时,确保所有必要的库,如`jsf-api.jar`(通常与`jsf-impl.jar`一起使用,提供JSF实现),被正确地添加到Tomcat的类路径(ClassPath)中是至关重要的。如果缺失这些库,应用程序...
3. **Managed Beans**: Managed Beans是JSF中业务逻辑的载体,它们可以注入到JSF组件中,处理用户的请求并更新模型数据。 4. **EL(Expression Language)**: EL是一种简洁的表达式语言,用于在JSF视图中访问和操作...
7. **Managed Beans**:JSF中的 Managed Beans 是用于存储和管理业务逻辑的对象,可以与UI组件进行绑定。 8. **Navigation**:JSF支持基于规则的导航,可以根据用户操作和业务逻辑决定页面跳转。 **license.txt** ...
**Managed Beans** 是JSF中的业务逻辑容器。它们是Java类,可以注入到JSF组件中,用于处理用户交互和业务逻辑。在JSF 1.2中,可以通过在bean类上定义注解来配置bean的范围(如request、session或application级别)和...
开发者通常会根据具体需求选择合适的集成方式,例如使用Spring的`DelegatingVariableResolver`实现JSF EL表达式对Spring Bean的访问,或者通过`ManagedProperty`注解将Spring Bean注入到JSF Managed Beans中。...
Managed Beans是JSF中处理业务逻辑的对象,它们通常包含了与视图交互的数据和方法。在JSF应用中,我们可以创建Managed Beans并使用注解(如`@ManagedBean`、`@SessionScoped`)来定义其生命周期和作用域。 **5. ...
在JSF项目中,你会找到表示层(Faces Beans)、控制层(Managed Beans)以及任何自定义的Java组件。 4. **bin**:这个目录通常存放编译后的Java类文件和其他资源文件。在构建过程中,`src`目录中的源码会被编译并...
#### 一、JSF与Managed Beans的概念 - **JSF (JavaServer Faces)**:一种用于构建企业级Web应用程序的标准Java技术。它提供了一种简化的方式来构建用户界面,并且能够更好地处理用户输入以及服务器端业务逻辑。 - **...
JSF 1.2是JSF的第一个稳定版本,而JSF 2.x引入了许多改进和新特性,如Facelets视图技术、Managed Beans和依赖注入、以及更强大的Ajax支持。 JSF框架的核心组件包括以下几个部分: 1. **FacesContext**:这是JSF...
JavaServer Faces(简称JSF)是Java平台上的...通过运行和分析这个示例,开发者可以学习如何创建JSF页面,如何定义和使用Managed Beans,以及如何进行数据绑定和事件处理。这将为深入理解和使用JSF 2.x打下坚实的基础。
在本示例中,JSF的Managed Beans可能与EJB3的Session Beans相互协作。Managed Beans作为JSF的模型层,通过依赖注入获取到Session Beans的实例,然后调用其方法来处理业务逻辑。同时,JSF的视图层(Facelets页面)会...
在将JSF与Spring结合时,通常会使用Spring的依赖注入来管理JSF的Managed Beans,这样可以实现更灵活的控制和更好的测试性。为了实现这种结合,你需要以下jar包: 1. **JSF相关的jar包**:这通常包括jsf-api.jar和...
3. ** Managed Beans**:JSF中的Managed Beans是业务逻辑的容器,它们通常包含在`.java`文件中,通过注解如`@ManagedBean`和`@SessionScoped`来定义bean的作用域和生命周期。 4. **EL(Expression Language)**:...
JSF 2.0引入了对CDI(Contexts and Dependency Injection)的支持,使得Managed Beans可以利用CDI的特性,如上下文感知和更强大的依赖注入。 **9. JSF与EJB、JPA集成** JSF可以很好地与其他Java EE技术如EJB...
1. **业务逻辑处理**:Spring作为中央容器,管理所有bean,包括JSF的后台Managed Beans和Hibernate的数据访问对象(DAO)。Spring的DI使得组件之间可以松散耦合,方便维护和扩展。 2. **数据持久化**:Hibernate负责...
coursejsf-managedbeans-scopes 由 Cássio Oliveira 教授的 IFPB Monteiro 扩展课程中使用的项目存储库,内容是使用 JavaEE、JSF 和 Primefaces 进行 Web 开发简介。... ManagedBeans 和作用域简介。
Managed Beans 是JSF中用于存储和管理业务逻辑的对象。在JSF2中,可以通过注解如`@ManagedBean` 和 `@ViewScoped` 来轻松创建和配置bean。例如,我们可以定义一个名为`UserBean` 的bean,用于处理用户的登录信息。 ...
此外,JSF API与Java Managed Beans(JMBs)紧密集成,用于处理后台逻辑。Managed Beans是简单的Java对象,可以通过JSF EL直接访问,从而实现数据的封装和业务逻辑的处理。通过注解如`@ManagedBean`和`@Request...
Managed Beans是JSF中的核心组件,它们是普通的Java对象,用于存储和处理应用程序的数据。JSF自动管理这些bean的生命周期,提供依赖注入功能,并且可以通过EL在视图中直接访问。 **4. 验证(08-Validation.pdf)** ...