MyEclipse6Java开发中文教程 //类似于 Action类的用户受管Bean public final class UserBean extends object t *进行登录操作 @ return导航规则地址 public String loginot if(fgetUserName0 equals("myeclipse")&& getPasswordo equals("myeclipse")) eturnsuccess return "failure"; private string userName private string password public string getUserName()i return userName public void setUserName(String userName)[ this userName userName retur SWOR public void setPassword(string password) this password password. 当然,和以前的习惯一样,那个粗斜体的内容,是我们经过修改后手工加入的代码,用来处 理登录业务逻辑。和 Struts2一样,JSF也支持POJO的普通Java类模式的开发,所以 个受管Bean中除了属性之外,还可以加入任意多个业务功能定义,例如: public String doLogin( 只要其返回值为字符串即可,这个字符串对应的是一个浏览规则的别名,类似于原来 Struts 中所说的 Action Forward。 User Bean类并没有继承或者实现绑定到JsF的任何类或者接 刘长炯著
MyEclipse 6 Java 开发中文教程 11 刘长炯著 // 类似于Action类的用户受管 Bean public final class UserBean extends Object { /** * 进行登录操作. * @return 导航规则地址 */ public String login() { if(getUserName().equals("myeclipse") && getPassword().equals("myeclipse")) { return "success"; } return "failure"; } private String userName; private String password; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } 当然,和以前的习惯一样,那个粗斜体的内容,是我们经过修改后手工加入的代码,用来处 理登录业务逻辑。和 Struts 2 一样,JSF 也支持 POJO 的普通 Java 类模式的开发,所以一 个受管 Bean 中除了属性之外,还可以加入任意多个业务功能定义,例如: public String doLogin(); 只要其返回值为字符串即可,这个字符串对应的是一个浏览规则的别名,类似于原来 Struts 中所说的 ActionForward。UserBean 类并没有继承或者实现绑定到 JSF 的任何类或者接
MyEclipse6Jaa开发中文教程 口,它仅仅是一个简单的包含了额外的逻辑来执行有用的操作的 Java bean,用 Struts的 术语来说,它包含了 Struts Form和 Struts Action的所有功能,方便的合并在一个类中; 或者说它就是 Struts2中的 Action类。另一个和 Struts的不同之处是这些方法没有返回任 何特殊的类,例如 Action Forward,因为导航信息是在 faces- config. xml部署描述符中通过 配置完成的。我们将在后面章节展示如何创建并配置导航规则。 1444创建JSP页面 在这一小节里面将集中精力为我们的示例JSF应用创建JSP页面,来模拟一个简单的 网站常见的登录页面。最后的结果只需要2个JSP页面,一个用来提示用户来输入登录用 户们和密码,另一个用来告诉用户登录成功。我们把这两个页面分别命名为 userLogin jsp 和 userLogin Success jsp。为了简化过程,如果用户尝试登录的时候验证身份失败,就将 用户重定向回页面 userLogin jsp。为了避免引起混淆,我们没有在这个例子里使用任何JSF 自带的验证机制,不过你可以很容易的为JSF的 input Text/Secret组件添加验证器 ( Validator),可以使用这些输入框来验证用户输入的值的长度并且可以在登录失败时给用 户显示错误信息。 要创建我们的 userLogin. jsp页面,首先需要打开 faces-config. xml,在设计器的工具 箱中点击一下JSP按钮,然后再点击到画布上,或者拖住按钮然后放到画布上。当新 建JSP页面向导对话框弹出时,根据图14.10的提示在 File Name(文件名)输入框中输入 值 userlogin」sp并选择创建JSP页面的模板为 Default JSF template。同样再重复一次这 个步骤,创建JSP文件 userLogin Success. jsp(注意一定要选中JSF模板)。随后就可以 看到这两个JSP页面作为图标的形式显示在了画布上。 Palette reate a new jsP page 回凶 Select JSP Wizard 威 File Path: HelloJSF/WebRoot Navi gation File Name Template to use: Default JSF template Navi gation Mopen the file after wizard completi JSP 图14.10使用 faces-config. xml编辑器创建 userLogin. jsp 现在我们可以看看 faces-configXm的源代码清单,已经包含了上面我们所创建的 User Bean以及JSP页面的定义 <?xm1 version='1.0 encoding UTE-8I <faces-configxmlns="http://java.suncom/xml/ns/javaee 刘长炯著
MyEclipse 6 Java 开发中文教程 12 刘长炯著 口,它仅仅是一个简单的包含了额外的逻辑来执行有用的操作的 JavaBean,用 Struts 的 术语来说,它包含了 Struts Form 和 Struts Action 的所有功能,方便的合并在一个类中; 或者说它就是 Struts 2 中的 Action 类。另一个和 Struts 的不同之处是这些方法没有返回任 何特殊的类,例如 ActionForward,因为导航信息是在 faces-config.xml 部署描述符中通过 配置完成的。我们将在后面章节展示如何创建并配置导航规则。 14.4.4 创建 JSP 页面 在这一小节里面将集中精力为我们的示例 JSF 应用创建 JSP 页面,来模拟一个简单的 网站常见的登录页面。最后的结果只需要 2 个 JSP 页面,一个用来提示用户来输入登录用 户们和密码,另一个用来告诉用户登录成功。我们把这两个页面分别命名为 userLogin.jsp 和 userLoginSuccess.jsp。为了简化过程,如果用户尝试登录的时候验证身份失败,就将 用户重定向回页面 userLogin.jsp。为了避免引起混淆,我们没有在这个例子里使用任何 JSF 自带的验证机制,不过你可以很容易的为 JSF 的 inputText/Secret 组件添加验证器 (Validator), 可以使用这些输入框来验证用户输入的值的长度并且可以在登录失败时给用 户显示错误信息。 要创建我们的 userLogin.jsp 页面,首先需要打开 faces-config.xml,在设计器的工具 箱中点击一下 JSP 按钮 ,然后再点击到画布上,或者拖住按钮然后放到画布上。当新 建 JSP 页面向导对话框弹出时,根据图 14.10 的提示在 File Name (文件名) 输入框中输入 值 userLogin.jsp 并选择创建 JSP 页面的模板为 Default JSF template。同样再重复一次这 个步骤,创建 JSP 文件 userLoginSuccess.jsp(注意一定要选中 JSF 模板)。随后就可以 看到这两个 JSP 页面作为图标的形式显示在了画布上。 图 14.10 使用 faces-config.xml 编辑器创建 userLogin.jsp 现在我们可以看看 faces-config.xml 的源代码清单,已经包含了上面我们所创建的 UserBean 以及 JSP 页面的定义: <?xml version='1.0' encoding='UTF-8'?> <faces-config xmlns="http://java.sun.com/xml/ns/javaee
MyEclipse6Java开发中文教程 xmlns:xsi=http://www.w3.org/2001/xmlschema-instance xsischemalocation="http://java.suncom/xml/ns/javaee http://java.suncom/xml/ns/javaee/web-facesconfig12.xsd" version="1.2> <managed-bean> <managed-bean -name >UserBean</managed-bean-name> <managed-bean-class>com. jsfdemo UserBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> property-name >userName</ <property-class>java. lang String</property-class> <value></value> </managed-property> <managed-property> <property-name >password</property-name> <property-classjava. lang String</propeity-class> <value></x </managed-property> </managed-bean> <navigation-rule> <from-view-id>/userLogin. jsp</from-view-id> </navigation-rule> <navigation-rule> d>/userLoginSuccess jsp</from-view-id> </navigati rulex< onfig> 对应我们上面所介绍的开发过程,大家可以很容易的辨认出这些标记的含义。 接着我们可以打开页面 userLogin jsp来给我们的应用加入功能,可以在JSF画布上双击 J /userLogin. j 图标来打开并编辑这个页面,也可以在 Package Explorer视图的 Webroot目录F找到此文件然后双击打开。此时将会用可视化的JSF编辑器打开页面,如 图1411所示。在 Palette(工具箱)上,我们可以展开各个目录,看到对应的组件(或者 说控件,页面元素,自定义标签等),点击后即可放到页面,然后即可添加到页面并可以在 Properties视图中设置所需的属性(有的组件添加时会弹出对话框进行必要的设置)。和JSF 开发有关的两个目录是 JSF Core和 JSF HTML。注意刚开始的时候 Palette是折叠的,点 击向左的小箭头展开它。 现在,我们需要对这个页面进行如下修改: 修改页面的编码为GBK 加入国际化消息包调用 fload Bundle(需要说明的是消息驱动包是可选的) 添加一个 h output Text来输出消息包中的国际化欢迎信息 login|abel 添加一个表单h:forn 给 username属性添加一个 h input Text组件(文本框) 给 password属性添加一个 h input Secret组件(密码框) 给 username的 input Text添加一个 h outputLabel来输出消息包中的国际化欢迎 刘长炯著
MyEclipse 6 Java 开发中文教程 13 刘长炯著 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" version="1.2"> <managed-bean> <managed-bean-name>UserBean</managed-bean-name> <managed-bean-class>com.jsfdemo.UserBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>userName</property-name> <property-class>java.lang.String</property-class> <value></value> </managed-property> <managed-property> <property-name>password</property-name> <property-class>java.lang.String</property-class> <value></value> </managed-property> </managed-bean> <navigation-rule> <from-view-id>/userLogin.jsp</from-view-id> </navigation-rule> <navigation-rule> <from-view-id>/userLoginSuccess.jsp</from-view-id> </navigation-rule></faces-config> 。对应我们上面所介绍的开发过程,大家可以很容易的辨认出这些标记的含义。 接着我们可以打开页面 userLogin.jsp 来给我们的应用加入功能,可以在 JSF 画布上双击 图标来打开并编辑这个页面,也可以在 Package Explorer 视图的 WebRoot 目录下找到此文件然后双击打开。此时将会用可视化的 JSF 编辑器打开页面,如 图 14.11 所示。在 Palette(工具箱)上,我们可以展开各个目录,看到对应的组件(或者 说控件,页面元素,自定义标签等),点击后即可放到页面,然后即可添加到页面并可以在 Properties视图中设置所需的属性(有的组件添加时会弹出对话框进行必要的设置)。和JSF 开发有关的两个目录是 JSF Core 和 JSF HTML。注意刚开始的时候 Palette 是折叠的,点 击向左的小箭头展开它。 现在,我们需要对这个页面进行如下修改: • 修改页面的编码为 GBK • 加入国际化消息包调用 f:loadBundle(需要说明的是消息驱动包是可选的) • 添加一个 h:outputText 来输出消息包中的国际化欢迎信息 login_label • 添加一个表单 h:form • 给 username 属性添加一个 h:inputText 组件(文本框) • 给 password 属性添加一个 h:inputSecret 组件(密码框) • 给 username 的 inputText 添加一个 h:outputLabel 来输出消息包中的国际化欢迎
MyEclipse6Java开发中文教程 信息 username label 添加登录的命令按钮 h command Button 皿81AA 工具箱 Palette 4directive.pageBhttp://java.sun.com/jsf/html 焉htp://jaa.sun.com/jsf/core多scriptlet :, Marquee CHTML 4.0 >head可视化JSF设计器 JSF Core JSF HTML This is my JSF JSP page. e C JSF C JSTL XML JSTL XML CJSTL XML RT CJSTL core TST 10<! DOCTYPE HTML PUBLIC #-//W3C//DTD HTML 4.01 Transiti 11 <html> 12<head> Cbase href=h<=basepath%>r> 14 <title>My JSF 'userLogin. jsp starting page</titl 15 16</head> 源代码同步编辑器 180<body> <t:vieu> This my USF JSP page. <br> </f: view> 22</body> 预览 3 </html Design Previ 刘长炯著
MyEclipse 6 Java 开发中文教程 14 刘长炯著 信息 username_label • 添加登录的命令按钮 h:commandButton
MyEclipse6Java开发中文教程 C JSF Cor C JSF HTML attri bute Fox Command Button A1 convertNumber 回 Data Table 的Fo facet 图 Graphic I abi Hi dden Input TrT par am Er Message select工tem 自 Messages 'e selectItems ≤ Output Format 日 subvi ew s Output Label vali dateDouble Soutput Te 目P E Panel Group M validator I** Secret Input M Select Boolean oo verbatim Checkbox 图 Select Many Checkbox 客]Se1 ect Many Listbox 图 Select Many Menu op Select One Listbox 国 Select one meny o Select One Radio I Textarea Input 图1411可视化的JSF编辑器及工具箱JSF组件列表 好了,现在让我们依次来完成,首先把页面第一行的编码修改为中文 % page language="java"pageEncoding="GBK"%> 接着我们将页面中的 This is my JSFJS尸 Page这句生成的代码删除掉。现在请单击展 开 JSF Core,然后选择里面的⊕1 ad Bundle这个按钮,点击一下然后再点到页面上,或者 点中不放拖到页面设计视图中松开鼠标,即可将加载消息资源的JSF标签加入到页面中, 初始的代码如下所示: <f:load Bundles 。不过这样是不完整的,此时可以在 Properties视图中快速编辑其属性,如图1412所示 目 roperties23 f: loadBundle w quick edit Basename: Messages Browse Attributes bundle 图1412编辑加载消息包的标记 var定义了这个消息包的别名,可以在页面的后面进行引用, Basename则是在第1442 刘长炯著
MyEclipse 6 Java 开发中文教程 15 刘长炯著 图 14.11 可视化的 JSF 编辑器及工具箱 JSF 组件列表 好了,现在让我们依次来完成,首先把页面第一行的编码修改为中文: <%@ page language="java" pageEncoding="GBK"%>。 接着我们将页面中的 This is my JSF JSP page.这句生成的代码删除掉。现在请单击展 开 JSF Core,然后选择里面的 这个按钮,点击一下然后再点到页面上,或者 点中不放拖到页面设计视图中松开鼠标,即可将加载消息资源的 JSF 标签加入到页面中, 初始的代码如下所示: <f:loadBundle /> 。不过这样是不完整的,此时可以在 Properties 视图中快速编辑其属性,如图 14.12 所示。 图 14.12 编辑加载消息包的标记 Var 定义了这个消息包的别名,可以在页面的后面进行引用,Basename 则是在第 14.4.2