添加校验和菜单
本章将向你展示怎样为personForm添加校验逻辑,使得firstName和lastName在页面上变成必填field,并且添加一个屏幕列表来显示数据库中所有人的记录。
这部分内容依赖于Part III: 创建Action和JSP
关于本章
本章将向你展示怎样使用Struts的Validator 为你的PersonForm对象添加校验逻辑(客户端和服务器端)。我们也会使用Display Tag Library
内容
· [1] 为Person.java 添加XDoclet Validator标签
· [2] 检查和测试添加了校验的JSP
· [3] 为 DAO和Manager Test添加testGetPeople方法
· [4] 为DAO和Manager添加getPeople()方法
· [5] 为Action Test 添加testSearch() 方法
· [6] 为Action添加search方法
· [7] 创建personList.jsp和Canoo test
· [8] 为菜单(Menu)添加链接(Link)
为Person.java 添加XDoclet Validator标签
正常情况下,如果你想使用Struts的Validator,你必须用手写validation.xml文件。如果你不使用AppFuse, 你也必须在ApplicationResources_en.properties文件中配置Validator Plugin和error key。如果你想获得更多的信息,请参见Validation Made Easy Tutorial
我们要感谢Xdoclet,它使得这一切都变得很简单 – 你只需要为Person类添加几个@struts.validator标签。打开它 (src/dao/**/model/Person.java),然后修改getFirstName()和getLastName() 方法的JavaDoc,使它们包含 @struts.validator type="required" 标签。
/** /** |
你还可以在这个标签里添加一个msgkey属性( attribute),它用来覆盖错误的默认消息的key。
@struts.validator type="required" msgkey="errors.required" |
type="required"的默认的Key已经是errors.required了,所以我经常保留它做为默认值。这个key被定义在web/WEB-INF/classes/ApplicationResources_*.properties中。 你也许注意到:虽然XDoclet的文档
现在如果你保存Person.java,然后运行ant clean webdoclet,将会在目录build/你的项目名称/WEB-INF/下产生一个validation.xml文件. 它应该有一个为"personForm"使用的入口:
<form name="personForm"> <arg0 key="personForm.firstName"/> <arg0 key="personForm.lastName"/> |
在我们的PersonForm.jsp中可以使用客户端校验,我们在PersonForm.jsp文件的底部添加一个<html:javascript>标签和一些脚本。下面的内容是已经存在的(感谢viewgen) – 你只需要将它们从注释中放开,它们被注释的原因是:如果指定了一个Form的名字并且校验规则不存在,Validator将会抛出一个异常。
我个人认为这是一个 a bug