UML软件工程组织

用WSAD向导快速构造Struts应用 (2)
作者:Don Denoncourt,仙人掌工作室编译选择自 赛迪网
二、创建ActionForm

在创建JSP页面之前,首先要创建Logon表单Bean。在J2EE导航器视图中,选中LogonWorld的Java Source节点,从WebSphere Studio的主菜单选择“文件”→“新建”→“其他”。在“新建:选择”对话框(图六)中,打开左边列表中的Web节点,选中Struts,然后在右边的清单中选择“ActionForm类”,点击“下一步”。



图六


在“新建ActionForm类”对话框中,认可下列缺省值:文件夹,缺省值是/LogonWorld/Java Source;Java包,缺省值是logonworld.forms。但在ActionForm类名的输入框中必须修改默认值,把它改为LogonForm。确认一下超类的缺省值是否为org.apache.struts.action.ActionForm。其余输入框都采用缺省值,点击“下一步”按钮,然后再次点击“下一步”。

“为ActionForm类创建新的accessor”对话框(图七)显示出一个空的表格。点击表格旁边的“添加”按钮,在名称栏输入user,类型栏保持String不变。再次点击“添加”按钮,在名称栏输入password,类型栏仍旧为String。点击“下一步”。



图七


在“创建用于ActionForm类的映射”对话框中(图八),接受下列缺省值:配置文件名称,缺省值是WEB-INF/struts-config.xml;映射名称,缺省值是LogonForm。



图八


点击“完成”按钮。

WebSphere Studio自动在Java编辑器中打开刚才生成的LogonForm.java文件。可以看到,LogonForm.java文件中已包含标准Struts方法的模板代码,其中最重要的一个方法是validate方法。在WSAD中向下滚动LogonForm.java文件,找到validate方法。可以看到,validate方法的注释中提供了一个创建Struts error对象的例子。后面我们要在validate方法中加入自己的验证逻辑,不过在此之前,我们首先要在Struts资源文件中添加自定义的错误信息字符串。

三、将错误信息加入Struts属性文件

在J2EE导航器视图中,双击LogonWorld的Java Source节点下的ApplicationResources.properties文件打开它。在编辑器中,取消两行#error代码之前的注释符号“#”,例如把原来的“#errors.header=<ul> ”改成“errors.header=<ul> ”。然后再加入下面两条内容:


logon.form.user.error=<li>用户名字错误!</li> 
logon.form.password.error=<li>密码错误!</li>


当JSP页面包含 标记时,Struts将根据errors.header和errors.footer的值以HTML列表的格式显示出错误信息。

四、在ActionForm Bean中加入验证逻辑

设置好错误信息值之后,我们就可以在LogonForm的validate方法中使用它们了。首先转到(或者打开)LogonForm.java源文件,找到文件末尾的validate方法,在return语句之前加入下列内容:


if ((user == null) || (user.length() < 4)) {
  errors.add("user",  new ActionError( "logon.form.user.error"));
}
if ((password == null) || ( password.length() < 4)) {
  errors.add("password",  new ActionError( "logon.form.password.error"));
}


按Ctrl+S键保存并编译LogonForm类。

我们知道,struts-config.xml配置文件中必须指定LogonForm Bean,不过现在已经由WSAD的Struts向导自动为我们完成了。打开struts-config.xml文件,可以看到指定表单Bean的代码为:


<!-- 表单 Bean -->
 <form-beans>
  <form-bean name="logonForm" type="logonworld.forms.LogonForm">
   </form-bean>
 </form-beans>


不过仅有这一配置还不够,我们还要配置Logon.jsp,定义一个动作映射来指定自定义的Action类。现在我们还没有创建Action类,下面就来完成它。

 

 

版权所有:UML软件工程组织