类型转换与输入校验的流程 此文件里写:xwork.default.invalid.fieldvalue={0}error 注意:{0}中是动态的,是一个属性名,哪个属性出错了就显示哪个,显示的属性名填充{0}。 此文件里写:invalid.fieldvalue.指定的属性名字=提示的信息(此处可以用汉字但必须在dos下用native2ascii命令转化)
如何使用struts2的标签? 1、 首先要在需要用标签的文件中写入引入标签的语句: 注意:标签定义的源始文件是在struts-tag.tld中。 <%@taglibprefix=”s”uri=”/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.resources”value=”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()进行执行(调用业务逻辑); ******************************************************************************************************************************* 输入校验: |
|