struts入门之输入校验

 输入校验有两种方式:分别使用全局校验文件和局部校验文件【以PiontAction类为例

 

一、全局校验文件的实现:

 

1、首先在struts.xml文件中加入:<constant name="struts.custom.i18n.resources" type="message"/>

 

【备注:该message名任意取值】

//constant常量含义:是struts2整个框架中要使用的哪些常量,这些常量将替换掉struts中的默认值!在不使用这些的情况下,如果出现类型转换错误时,struts2框架会自动生成一条错误信息,并将该信息加入到addfielderror里面,一般格式是:Invalid field name for “属性名”

 

2、在classes目录下(若在myeclipse中可以选择在src目录下,因为IDE自动将src目录下的文件映射到了classes目录下)创建一个名为message.properties的文件

 

xwork.default.invalid.fieldvalue={0} error

 

当提交的表单在类型转换出错的时候就会提示相应的信息:字段名称 error

 

二、局部校验文件的实现

 

1、如要对PiontAction类中的字段进行校验,可以编写名为PiontAction.properties的局部校验文件

【备注:文件名与该类类名一致,且该文件必须跟该类文件放在同一目录下】

 

2、PiontAction.properties的局部校验文件:

 

invalid.fieldvalue.属性名1=提示错误的信息

invalid.fieldvalue.属性名2=提示错误的信息

invalid.fieldvalue.属性名3=提示错误的信息

 

(如要显示中文错误提示信息,请采用jdk/lib/native2ascii文件进行转换 方法:native2ascii  当前文件(如:test.txt)  转换后的文件PiontAction.properties)^_^)

 

当执行时会自动调用该配置文件。

 

******************************在使用时可能出现的问题*********************************************

1、虽然使用了校验文件,可结果没有出现在需要显示错误信息的jsp页面中

 

请在jsp页面中加入<s:fielderror/> 即可直接显示中。

 

2、错误信息也可以添加在PiontAction类中validate()方法中

 

当表单提交时,会先执行配置文件中的内容,然后再执行validate中的内容

 

3、当既有全局资源文件,又有局部资源文件的时候,将被局部资源文件所代替。但是无法替换掉validate()方法中的错误提示信息;可以采用将<s:form>标签的theme值设置为simple ,将取消表单默认的验证功能!

 

***** @_@ ************** ^-^ ****************** #_# *****************

我们 已经知道表单提交过来的内容会先进行类型转换,然后再进行输入校验,最后执行execute方法。

 

4、在配置的struts.xml文件文件中,<action>标签中的<result>标签中的type属性默认是dispatcher 请求转发。

 

5、而且可以在<action>标签中设置method属性值,该值指定将交给那个方法进行验证,如有validate方法,默认先执行validate方法,然后执行method属性中指定的方法:

 

eg:<action name="register" class="com.xx.xx.PointAction" method="method1">

 

执行时,首先会进入该com.xx.xx.PointAction类,如有validate方法,就先执行validate方法,然后再执行找到该method属性值对应的验证方法,方法名为 validateMethod1

方法取名规则:validate+ 指定方法名(首字母必需大写)

 

为了防止validate对验证进行干扰,可以采取以下策略:不重写validate方法,或者将validate方法改名为validateExecute()方法。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值