目标:在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
实用教程》