目标:在JSF应用中使用管理Bean
在上一节中,我们使用JSF组件创建了一个简单的web应用。但是,我们的Web应用还不能做任何有意义的事情。为了丰富我们的JSF应用的功能,可以建立辅助Bean(Backing Bean)与UI组件的关联。辅助Bean又称为JSF管理Bean,是一个普通的JavaBean组件,但是他们的属性和方法可以供JSF组件访问。
在我们的例子中,我们将创建一个UserBean管理Bean,有两个属性name和birthday。
1. 右键点击工程,选择New,然后选择 File/Folder。在Web 分类中,选择JSF Managed Bean template,然后点击 Next。
2. 把bean命名为UserBean,放在astrologer.user中,其他的设置和默认值不用修改,然后点击Finish。IDE会在源代码编辑区打开UserBean.java,并在faces-config.xml中添加下面的bean声明:
<managed-bean>
<managed-bean-name>UserBean</managed-bean-name>
<managed-bean-class>astrologer.user.UserBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
3. 在UserBean.java中添加唉下面的域声明
public class UserBean {
String name;
String birthday;
4. 然后为域生成getter和setter方法。在文件的任何地方右键点击,然后选择Refactor中的 Encapsulate Fields。选择对话框中的Next,然后在重构窗口中重构。IDE把域的访问控制修改成private,然后创建getter和setter方法。
5. 在greeting.jsp中,作如下修改(粗体部分)。注意:UserBeans.java中可以使用代码完成器。
<f:view>
<h:form>
<p>Enter your name: <h:inputText value="#{UserBean.name}" /></p>
<p>Enter your birthday: <h:inputText value="#{UserBean.birthday}" /></p>
<h:commandButton value="Submit" action="submit" />
</h:form>
</f:view>
6. 在success.jsp中添加JSF标签库声明,可以从greeting.jsp中拷贝粘贴。
7. 通过点击控制窗口的JSF Form按钮并拖拽到原文件编辑器中的h1标记下面,为success.jsp添加一个空的JSF表单。
8. 修改success.jsp如下:
<h1>Congratulations</h1>
<f:view>
<h:form>
<p>You've successfully registered with jAstrologer.</p>
<p>Your name is <h:outputText value="#{UserBean.name}" /></p>
<p>Your birthday is <h:outputText value="#{UserBean.birthday}" /></p>
</h:form>
</f:view>
9. 右键点击工程,然后选择Run Project。当工程部署之后您会看到同样的欢迎界面。

输入值并点击Submit,success.jsp会显示您输入的值,如下图所示:

关于辅助Bean,可以参考书上198页第15章辅助Bean
书:《Java EE 5实用教程》