以下内容是基于导入struts2-2.3.32.jar包来讲的
1.xml验证
Struts2提供了验证器,实现了通用的验证逻辑。例如:
非空验证器、长度验证器、日期验证器、email验证器等。具体定义位置:
xwork-core-2.3.4.1.jar包下/com/opensymphony/xwork2/validator/validators/default.xml
适合以下情况:
1.验证字段较多
2.验证逻辑简单且较多重复
3.xml文件过多,验证一个方法,需要有一个xml文件对应
控制器:
1 package com.rong.web.action; 2 3 import com.opensymphony.xwork2.ActionSupport; 4 import com.rong.web.entity.Student; 5 6 public class MyAction extends ActionSupport { 7 private static final long serialVersionUID = -351587239525292420L; 8 private Student student; 9 public Student getStudent() { 10 return student; 11 } 12 public void setStudent(Student student) { 13 this.student = student; 14 } 15 @Override 16 public String execute() throws Exception { 17 System.out.println("execute!!!"); 18 return SUCCESS; 19 } 20 }
xml配置文件:
xml文件要与Action类在同一个目录
xml命名规则:
验证整个Action类所有的方法
xml文件命名为:类名-validation.xml
在官网下载的struts项目下搜索validation,找到Login-validation.xml文件,把该文件内容复制到MyAction-validation.xml文件中,修改文件内容:
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<!-- 要验证的属性 -->
<field name="student.sname">
<!-- 字符串非空验证器,type是验证器名字,可在default.xml文件查找name -->
<field-validator type="requiredstring">
<message>学生名字不允许为空!!!</message>
</field-validator>
<!-- 字符串长度验证器 -->
<field-validator type="stringlength">
<!-- 参数名字name可在com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator查看 -->
<param name="minLength">6</param>
<param name="maxLength">18</param>
<message>长度区间必须在6-18之间</message>
</field-validator>
</field>
<!-- 可以继续添加field标签,添加属性验证-->
<!-- <field name="student.sage">
<field-validator type="int">
<message>xxxxxx</message>
</field-validator>
</field> -->
</validators>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default" >
<action name="check" class="com.rong.web.action.MyAction">
<result>/one.jsp</result>
<!-- 验证信息错误时,框架固定返回input视图 -->
<result name="input">/index.jsp</result>
</action>
</package>
</struts>
<form action="${pageContext.request.contextPath }/check" method="post">
<input type="text" name="student.sname"/>
<!-- 获取后台返回的校验信息 -->
<!-- 显示指定错误信息 -->
<s:fielderror key="#student.sname"></s:fielderror>
<!-- 显示指定错误信息 -->
<s:fielderror fieldName="student.sname"></s:fielderror>
<!-- 可以显示所有的错误信息 -->
<s:fielderror></s:fielderror>
<input type="submit" value="登录"/>
</form>
验证某个方法
只需要把xml文件名更改为:类名-该方法的访问路径-validation.xml
例如:验证指定方法
命名规则: ActionClassName- ActionName -validation.xml
ActionClassName是某个Action类的类名
ActionName是某个方法的访问路径
UserAction-user_add-validation.xml
user是<action name="user_*">
xml约束:略。
2.国际化
国际化原理:
本地化信息
资源文件: 基本名字_语言名_国家码.properties
基本名.properties(默认)
加载资源文件
显示资源文件信息
资源文件:
中文:resource_zh_CN.properties
英文:resource_en_US.properties
默认:resource.properties
存储在同一Action所在包下!
struts.properties放在src根目录下,配置信息会覆盖原有的default.properties的配置信息