struts中使用validator

校验器:
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" />
<set-property property="stopOnFirstError" value="true" />
</plug-in>



validator-rules.xml:
一般来说写规则

<validator name="required"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
javax.servlet.http.HttpServletRequest"
msg="errors.required"/>



errors.required要在ApplicationResources.properties中定义

validation.xml:
一般来说写条件

<form name="loginForm">
<field property="username" depends="required,minlength">
<arg key="label.login.username" position="0"/>
<arg name="minlength" key="${var:minlength}" resource="false" position="1"/>
<var>
<var-name>minlength</var-name>
<var-value>5</var-value>
</var>
</field>
</form>



FormBean请继承:ValidatorForm

ApplicationResources_zh_CN.properties:
可以加参数{0},在validation.xml中绑定
errors.required={0}不能为空,必须输入
errors.minlength={0}的长度不能小于{1}

需要 JavaScript的时候:
form上要加上
οnsubmit="return validateLoginForm(this)"

jsp里加上这个会生成JavaScript代码
这个formName是在validation.xml中定义的。
<html:javascript formName="loginForm"/>

全部搞定

另:struts配置文件中<action>元素的name属性和validator.xml文件的<form>元素的name属性要完全相同。

在配置过程中遇到了另一个问题,如果在Action中将formbean处理之后以request.setAttribute("beanName",BeanName),在jsp页面中用request.getAttribute("beanName")获取到,在页面中使用;但是在经过验证时,sturts配置文件中input属性直接定向到jsp页面,也就是不经过action转发,这时应该是jsp捕获不了beanName了吧?即request.getAttribute("beanName") 对象为null,但是这时有了一个新发现:用request.getAttribute("BeanName")就能获取到(注意大小写),是不是struts的配置文件中将form-name属性当作一个全局变量了呢?

     测试了一下,只要formbean数据有变化,用request.getAttribute("XXXXBean")都能获取到XXXXBean,新发现!;


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值