读书人

struts2.0 应验

发布时间: 2012-10-08 19:54:56 作者: rapoo

struts2.0 验证

一、struts2.0的输入验证:A、手动验证:1)重写validate()
2)重写validateXxx()B、使用验证框架?Action类都要继承ActionSupport类
二、为一个Action设置多个逻辑处理:?为了更具有针对性的处理业务逻辑与针对性的进行输入校验,可以采用指定业务逻辑处理方法的方法,即对同一个Action设置多个逻辑处理方法,也就是说对于某个表单,我们可以指定在Action中让哪个方法来处理它的相关业务?解决方法:struts.xml中通过method属性指定处理其逻辑的方法?例如:
LoginAction中有login()和regester()两个业务处理方法:
?
A、如果重写了ActionSupport的validate()方法,则该方法会校验所有的处理逻辑。B、为了实现校验指定逻辑方法,可以在Action中增加一个validateXxx()方法,其中Xxx即是Action对应的处理逻辑方法。同时不重写validate方法?例如:
? validateRegist()方法---专门校验regist()方法,即校验reg表单提交的内容
? validateLogin()---专门校验login()方法,即校验login表单提交的内容?三、struts2的输入校验流程:1)、类型转换器负责对字符串的请求参数执行类型装换,并将这些值设置为Action的属性值2)、在类型转换过程中如果出现异常,则将异常信息保存到ActionContext中,conversionError拦截器负责将其封装到fieldError里,然后执行第3步;如果没有异常,则直接进入第3步3)、如果有validateXxx()方法,则调用该方法4)、调用Action类中的validate()方法5)、如果经过上面4步都没有出现fieldError,将调用Action里处理用户请求的处理方法;???? 如果出现了fieldError,将转入input逻辑视图所指定的视图资源。
???????
四、struts2的验证框架初步:?? ? ??只需要为Action指定一个校验文件即可,该文件指定了Action的属性必须满足怎样的规则。每个Action都有一个校验文件,命名规则:Action名字-validation.xml;该文件保存在与该Action类的相同路径下。1、配置文件:
?1)<field name="username">--要验证的字段
2)<field-validator type="requiredstring">--验证规则(校验器)
3)<param name="trim">true</param>--校验参数
4)<message>用户名不能为空</message>--验证失败的输出信息
2、配置文件中使用国际化显示错误信息:?A、message元素的key属性:<message key="error.password"></message>
B、使用${getText("message-key")}: <message>${getText("error.username")}</message>
3、客户端验证:
? 在<s:form>表单中添加validate="true"即可,struts2客户端验证仍是基于JavaScript的,struts2将服务器验证转为客户端验证。
??
<s:form action="login" validate="true">????注意:????? A、如果验证文件中错误信息使用<message key="error.password"></message>形式输出的话,则页面会出现FreeMarker template error!的错误。
?????? 故必须使用${getText("message-key")}形式
?? ???B、不是所有的服务器端验证都可以转为客户端验证?4、校验器的配置风格:?1)字段校验器:字段优先字段的校验遵循以下规则:?<validators>
this.addFieldError()方法要是能表述出来就更清晰了,当时我把这个方法名字给忘记了…… ?

读书人网 >软件架构设计

热点推荐