在Struts中验证框架的运行机制

用commons Validator添加验证
为了在Struts中使用验证,执行以下几步:
1. 在struts-config.xml中添加ValidatorPlugin。
2. 创建validation.xml,指定lastName为必填字段。
3. 把DynaActionForm改用DynaValidatorForm。
4. 仅为save()方法设置验证(validation)。
5. 在message.properties中添加validation errors。
 
 
struts-config.xml 中添加 ValidatorPlugin
配置 Validatorp plugins, 添加以下片断到 struts-config.xml :
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames" value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in>
从这里你可以看出, Va l i d a t o r 会查找 W E B - I N F 下的两个文件 v a l i d a t o r- r u l s . x m l
validation.xml 。第一个文件, validator-rules.xml, 是一个标准文件,作为 Struts 的一部分发
布,它定义了所有可用的验证器 (validators) ,功能和客户端的 javascript 类似。第二个文件,
包含针对每个 form 的验证规则。
创建 validation.xml ,指定 lastName 为必填字段
validation.xml 文件中包含很多 DTD 定义的标准元素。但你只需要如下所示的 <form> <field>,
更多信息请参阅 Validator 的文档。在 web/WEB-INF/validation.xml 中的 form-validation 标签
之间添加 form-set 元素。
<formset>
<form name="userForm">
<field property="user.lastName" depends="required">
 
XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/
<arg0 key="user.lastName"/>
</field>
</form>
</formset>
DynaActionForm 改为 DynaValidatorForm
struts-config.xml 中的 DynaActionForm 改为 DynaValidatorForm
<form-bean name="userForm"
type="org.apache.struts.validator.DynaValidatorForm">
...
save() 方法设置验证 (validation)
使用 Struts DispatchAction 弊端是,验证会在映射层 (mapping level) 激活。为了在 list edit
页面关闭验证。你必须单独建一个 "validate=false" 的映射。例如, AppFuse UserAction
两个映射: "/editUser" "/listUser" 。然而有一个更简单的方法,可以减少 xml ,只是多了一些
java 代码。
1. "/user" 映射中,添加 validate="false"
2. 修改 UserAction 中的 save() 方法,调用 form.validate() 方法,如果发现错误,返回编辑页
面。
if (log.isDebugEnabled()) {
log.debug("entering 'save' method...");
}
// run validation rules on this form
ActionMessages errors = form.validate(mapping, request);
if (!errors.isEmpty()) {
saveErrors(request, errors);
return mapping.findForward("edit");
}
DynaActionForm userForm = (DynaActionForm) form;
dispatchAction 运行时,与附带一个属性的两个映射相比,这样更加简洁。但用两个映射
也有一些优点:
验证失败时,可以指定转向 "input" 属性。
在映射中可以添加 "role" 属性,可以指定谁有访问权限。例如,任何人都可以看到编辑
(edit) 页面,但只有管理员可以保存 (save)
3. 运行 ant deploy 重新载入 (reload) ,尝试添加一个新用户,不要填写 lastName 。你会看到
一个验证错误,表明 lastName 是必填字段,如下所示:
XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/
2.10. 运行 ant deploy 命令的结果
Struts Validator 的另一种比较好的特性是客户端验证 (client-side validation)
4. f o rm 标签 ( w e b / u s e r Fo r m . j s p ) 中添加 " o n s u b m i t " 属性,在 f o rm 末尾添加
>html:javascript>
<html:form action="/user" focus="user.firstName"
οnsubmit="return validateUserForm(this)">
...
</html:form>
<html:javascript formName="userForm"/>
现在如果运行 ant deploy, 试图保存一个 lastname 为空的用户,会弹出一个 JavaScript
示: "Last Name is required" 。这里有一个问题,这个带 JavaScript form validator
JavaScript 功能都载入了页面。再好的方法是,从外部文件导入 Javascript 。参见第 5 章。
恭喜你!你已经开发一个 web 应用程序,它包含数据库交互,验证实现,成功信息和错误信息的
显示。第 4 章,将会把这个转向使用 Spring 框架。第 5 章中,会添加异常处理,文件上传,邮件发
送等特性。第 6 章会看一下 JSP 的替代技术,在第 7 章,会探讨 DAO 的不同实现,包括 iBATIS,JDO
Spring JDBC
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值