分享

struts2.x中的类型转换与输入校验的流程

 英昌知识汇聚馆 2011-11-21

类型转换与输入校验的流程
1、首先Struts2对客户端传来的数据进行类型转换
当数据类型转换不成功时:struts2会自带一个提示错误的信息,并且将该错误信息放到addFieldError(此方法是action类继承ActionSupport类中的方法)里面显示出来....但是它自带的提示信息对客户来说不友好....通常是程序员自己定义提示信息,定义的方式是:使用国际化提示文件(全局国际化文件或局部国际化文件):
一、全局国际化提示错误的文件(放在src目录下):文件名的格式为:message.properties

此文件里写:xwork.default.invalid.fieldvalue={0}error

注意:{0}中是动态的,是一个属性名,哪个属性出错了就显示哪个,显示的属性名填充{0}
注意:使用全局国际化提示错误的文件时需要配置struts.xml配置方法:<struts></struts>标签中写<constantname="struts.custom.i18n.resources"value="message"></constant>注意:value的名字是生成全局国际化提示文件的文件名字。
二、局部国际化提示文件(针对指定的一个属性,放在action类的同包下面)文件名字为:action.properties

此文件里写:invalid.fieldvalue.指定的属性名字=提示的信息(此处可以用汉字但必须在dos下用native2ascii命令转化)
一般情况下都使用局部提示文件。
2、类型转换完毕后再进入输入校验
action类中继承ActionSupport类可以使用ActionSupport中的方法validate()进行校验、此方法的作用是:验证是否为空、长度等!还有起提示作用的方法addFieldError("","")方法中两个参数一个是确定提示信息出现的位置,第二个是提示信息的内容。当验证不成功时就跳到一个原来的登陆页面、在struts.xml中定义的result的名字固定为input。但是一般的返回与struts.xml相连接的东西还是要出现在execute()方法中。。。
3
、如果类型转换和输入校验都没有错误发生,那么进入execute方法
注意:如果类型转换不成功也要进行输入校验

 

 

 

如何使用struts2的标签?

1、  首先要在需要用标签的文件中写入引入标签的语句:

注意:标签定义的源始文件是在struts-tag.tld中。

<%@taglibprefix=suri=/struts-tags%>

2、  如何在action的类中实现对表单的验证功能(注意:需要在被校验的表单中使用struts2的标签库标签,而不能使用html格式,否则不会生效

需要将自己编写的处理类继承ActionSupport这个类

publicclassLoginActionextendsActionSupport{

//需要覆盖父类的下面的方法

publicvoidvalidate(){

       if(null==this.getUsername()||"".equals(this.getUsername())){

           this.addFieldError("username","用户名不能为空");

       }

       if(null==this.getPassword()||"".equals(this.getPassword())){

           this.addFieldError("password","密码不能为空")

     } 

}

 

需要注意:

包含表单的jsp页面,如果用html的格式去写表单,那么<formaction=login.action></form>

包含表单的jsp页面,如果用struts2的标签格式去写表单,那么<s:formaction=login></s:form>,在此形式下,struts表单输入验证才会有效果

3、 如何在校验不通过后,让表单中还保存提交之前填写的值:只需要在表单的代码中加入value属性即可(html标签的情形)如果是struts2标签,如果表单提交失败,表单中的数据会自动保存。

<formaction="login.action"method="post">

用户名:<inputtype="text"name="username"value=”{requestScope.username}”>

密码:<inputtype="password"name="password"value=”{requestScope.password}”>

<inputtype="submit"value="登录">

<inputtype="reset"value="重置">

</form>

4、             当遇到类型转换错误时(也就是说,不能进行类型转换),struts2框架会自动生成一条错误信息,显示在需要提交的页面上。struts2内置会将该错误信息放到addFieldError里面。因此,只需要在提交表单的页面中,写上一条<s:fielderror></s:fielderror>语句即可(html代码形式表单需要写上该标签)

5、  在类型转换时,如何让出错提示的信息做到自定义,而不是显示struts2框架自带的:

需要做两步:

先在struts.xml文件的<struts></struts>标签中加入:

<struts>

<constantname=struts.custom.i18n.resourcesvalue=message>

</constant>

</struts>

再在src目录下创建message.properties这个资源文件(也叫全局资源文件),写上如下内容

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

 

当然,也可以创建局部资源文件(不需要在struts.xml中进行任何配置),针对一个表单提交到action时。创建独的资源文件。位置放在与类在同一个目录下,文件名要与需要验证的那个类名一致。比如:LoginAction.properties.内容如下:

invalid.fieldvalue.age=ageconversionerror

[类型转换与输入校验的关系:先有类型转换再有输入校验]

类型转换与输入校验的流程:

1、首先struts2对客户端传来的数据进行类型转换;

2、类型转换完成(包括成功与不成功都需要进入输入校验)后,再进行输入校验;

3、如果类型转换和输入校验都没错误发生,则进入execute()进行执行(调用业务逻辑)

 *******************************************************************************************************************************

输入校验:

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多