- 浏览: 1592095 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
A:在Struts2的框架汇中,开发者可以通过继承ActionSupport()类,并重写validate()方法来完成输入校验。使用在Action中重写Validate()或者 validateXxx()方法实现校验对某个方法起作用。
例如:validate()方法会对action中的所有 逻辑处理方法起作用 比如:execute() , login()
B:采用Struts2的内置校验器 也就是配置文件 来实现校验
-----------Validate()------------------------
1.在Struts2的框架汇中,专门用来校验数据的方法是validate(),开发者可以通过继承ActionSupport()类,并重写validate()方法来完成输入校验。
validate()方法会对action中的所有 逻辑处理方法起作用 比如:execute() , login()
2.action.
3.struts.xml
4.login.jsp
5访问
--http://localhost:8080/Struts2_validate/index.jsp
-----------ValidateXxxx()------------------------
6.只对action中某一个处理方法 进行校验 测试login(如果 valudate()不注释,就会对所有的方法起作用)
7.struts.xml
-----------Struts2内置校验器------------------------
struts2的所有校验器在
xwork-core.jar/com.opensymphony.xwork2.validator.validators/default.xml 中有定义。
9.Struts2内置校验器的种类
10.使用Struts2内置校验器
字段校验器配置风格
11.非字段校验器配置风格
12.使用内置校验器需要定义 ActionName-validate.xml文件 在其中定义 字段校验器和非字段校验器
--------使用 字段校验器 --------
13.action
14.InnerValidatorAction-validation.xml 定义上面 aciton的校验文件
15.strust.xml
16.login.jsp
17.访问上
--http://localhost:8080/Struts2_validator/login.jsp
如果不输入就可以看到 验证的消息
18.使用 非字段校验器 InnerValidator1Action-validation.xml
----------复合属性 校验------------
A:使用字段校验器
1.pojo
2.action
3.编写UserAction-validation.xml 校验文件
4.jsp
5.访问
---http://localhost:8080/Struts2_validator/login2.jsp
--如果不填 或者格式错误会有提示的
B使用 visitor 校验复合属性
1.action
2.定义 aciton校验文件 VisitorAction-validation.xml
3.定义实体类User 的上下文校验文件User-visitorContext-validation.xml (和User同目录)
4.login3.jsp
5.struts.xml
6.访问
--http://localhost:8080/Struts2_validator/login3.jsp
--没有输入的时候会看到验证信息
---------------集合属性校验---------------
1.action
2.定义action的校验文 VisitorListAction-validation.xml
3.定义集合中的对象 描述属性文件VisitorListAction-conversion.properties
(命名规则为 ActionNaqme-conversion.properties 具体的在 三十五 章里介绍)
4.定义集合对象校验文件User-visitorContext2-validation.xml
5.struts.xml
6.visitorList.jsp
7.访问
--http://localhost:8080/Struts2_validator/visitorList.jsp
--可以看到所设定的所有被校验的字段
-------------内置校验器 : required--------
1.用于要求户必须有值,(非null),
参数:fieldName:校验的字段名, 如果是字段校验则不用指定该参数。
2.用户 验证 一个对象是否为空
3.不能用来校验 string 类型的必填. 如果要校验 则使用 requiredstring。
4. required要求的是一个对象不能为null,它可以验证像Date类型的对象
5.requiredstring只是对字符串做限制
有参数 maxLength
minLength
trim
-------------内置校验器 :conversion-------
1.action
2,校验文件 IntAction-validation.xml
3.struts.xml
4.int.jsp
5.访问
--http://localhost:8383/Struts2_validator/int.jsp
--如果不输入 就出现 年龄必须为整数:错误信息
--如果输入 字符 就会出现两个 错误信息
---其中一个错误信息是 Struts2框架的错误信息为英文 为了解决这个问题 下面可以 改为只能够为 中文 或者 置空 这样就只有一个错误提示 或者 连个中文提示
6.定义IntAction_zh_CN.properties
这样就会提示两个中文错误信息 (不过意思是一样的)
-------------------Date--------------
1,校验文件 DateAction-validation.xml
-------------------Emal 和 URL--------------------
1.EmailUrlAction-validation.xml
------------------------expression 和 fieldexpression----------
expression 不能使用字段校验风格配置
fieldexpression 两种都可以使用
--------------------double----------------------
-----------------------regex-----------------------
------------------自定义校验器--------------
1.action
2.自定义一个校验器类 继承相应的 校验接口 就可以了 MyValidate .java
3.在框架中注册自定义的校验器类 编写 validators.xml (文件名固定)
4.使用自定义校验器类 编写 校验文件 MyValidateAction-validation.xml
5.struts.xml
6.myValidator.jsp
7.访问
--http://localhost:8383/Struts2_validator/myValidator.jsp
--如果输入就会出现 姓名必须为admin!的错误信息
例如:validate()方法会对action中的所有 逻辑处理方法起作用 比如:execute() , login()
B:采用Struts2的内置校验器 也就是配置文件 来实现校验
-----------Validate()------------------------
1.在Struts2的框架汇中,专门用来校验数据的方法是validate(),开发者可以通过继承ActionSupport()类,并重写validate()方法来完成输入校验。
validate()方法会对action中的所有 逻辑处理方法起作用 比如:execute() , login()
2.action.
package com.sh.action; import java.util.Date; import com.opensymphony.xwork2.ActionSupport; import com.sun.xml.internal.fastinfoset.stax.events.Util; public class ValidateAction extends ActionSupport { private String name; private String pwd; private Date date; @Override public String execute() throws Exception { // TODO Auto-generated method stub return SUCCESS; } @Override public void validate() { if(date==null || date.after(new Date())){ addFieldError("date", "出生日期无效!"); } if(pwd==null || Util.isEmptyString(pwd)){ addFieldError("pwd", "密码不能为空!"); } } }
3.struts.xml
<?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> <!-- 如果 注解的action配置改变时候不需要重新启动tomcate --> <constant name="struts.i18n.encoding" value="utf-8"/> <constant name="struts.devMode" value="false"/> <constant name="struts.convention.classes.reload" value="true" /> <package name="default" extends="struts-default"> <action name="validateAction" class="com.sh.action.ValidateAction"> <result>/success.jsp</result> <result name="input">/index.jsp</result> </action> </package> </struts>
4.login.jsp
<body> <s:fielderror/> <s:form action="validateAction" method="post" theme="simple"> 用户名:<s:textfield name="name"/><br/> 复合生日:<s:textfield name="pwd"/><br/> 常用日期:<s:textfield name="date"/><br/> 常用日期2:<sx:datetimepicker name="todayDate" label="Format (yyyy-MM-dd)" displayFormat="yyyy-MM-dd hh:mm:ss"/><br/> <s:submit value="提交"/> </s:form> </body>
5访问
--http://localhost:8080/Struts2_validate/index.jsp
-----------ValidateXxxx()------------------------
6.只对action中某一个处理方法 进行校验 测试login(如果 valudate()不注释,就会对所有的方法起作用)
package com.sh.action; import java.util.Date; import java.util.regex.Pattern; import com.opensymphony.xwork2.ActionSupport; import com.sun.xml.internal.fastinfoset.stax.events.Util; public class ValidateAction extends ActionSupport { private String name; private String pwd; private Date date; @Override public String execute() throws Exception { // TODO Auto-generated method stub return SUCCESS; } @Override //会对所有的 方法都有作用 比如 execute login public void validate() { if(date==null || date.after(new Date())){ addFieldError("date", "出生日期无效!"); } if(pwd==null || Util.isEmptyString(pwd)){ addFieldError("pwd", "密码不能为空!"); } } //登陆方法 public String login(){ return SUCCESS; } //只对登录方法进行校验 public void validateLogin(){ if(name!=null && !Pattern.matches("\\w{6,15}", name.trim())){ addFieldError(name, "validateLogin()方法的作用"); } } //get set }
7.struts.xml
<?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> <!-- 如果 注解的action配置改变时候不需要重新启动tomcate --> <constant name="struts.i18n.encoding" value="utf-8"/> <constant name="struts.devMode" value="false"/> <constant name="struts.convention.classes.reload" value="true" /> <package name="default" extends="struts-default"> <action name="validateAction" class="com.sh.action.ValidateAction"> <result>/success.jsp</result> <result name="input">/index.jsp</result> </action> <action name="validateLoginAction" class="com.sh.action.ValidateAction" method="login"> <result>/success.jsp</result> <result name="input">/index.jsp</result> </action> </package> </struts> 8.访问 --http://localhost:8080/Struts2_validate/index.jsp --如果不输入端额话,将会出现指定的错误信息。
-----------Struts2内置校验器------------------------
struts2的所有校验器在
xwork-core.jar/com.opensymphony.xwork2.validator.validators/default.xml 中有定义。
9.Struts2内置校验器的种类
required:必填校验器 requiredstring:必填字符串校验器 stringlength: 字符串长度校验器 int:整数校验器 date:日期校验器 expression:表达式校验器 fieldexpression:字段表达式校验器 email: 邮件地址校验器 url:网址校验器 conversioin:转换校验器 regex:正则表达式校验器
10.使用Struts2内置校验器
字段校验器配置风格
<validators> <field name="被校验的字段"> <field-validator type="校验器的类型"> <param name="参数名">参数值</param> <message> 提示信息</message> </field-validator> </field> <!--下一个要验证的字段--> </validators>
11.非字段校验器配置风格
<valiators> <validator type="校验器类型名"> <!--fieldName固定的 N必须大写--> <param name="fieldName">需要被校验的字段</param> <!--下面的param元素可以有0个或者多个--> <param name="参数名">参数值</param> <message key="I18NKey">提示信息</message> </validator> </validators>
12.使用内置校验器需要定义 ActionName-validate.xml文件 在其中定义 字段校验器和非字段校验器
--------使用 字段校验器 --------
13.action
package com.sh.action; import com.opensymphony.xwork2.ActionSupport; public class InnerValidatorAction extends ActionSupport { private int age; private String name; @Override public String execute() throws Exception { // TODO Auto-generated method stub return SUCCESS; } //get set }
14.InnerValidatorAction-validation.xml 定义上面 aciton的校验文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <!-- 根据字段配置校验 --> <!-- short-circuit="true" :表示短路,即下面的: 如果age 不是整数 就不会验证 age 的大小范围,这样我们的错误信息只有一个 (类似: if... else if...) short-circuit="false" :表示不短路(默认): 即下面的: 如果 age 不是整数,还会继续判断age的大小范围 这样页面就有两个错误信息 (类似if... if..) --> <!-- 验证字段必须为整数 --> <!--使用conversion校验器--> <field name="age"> <field-validator type="conversion" short-circuit="true"> <message>年龄必须为整数</message> </field-validator> </field> <!-- 验证字段必须的大小范围 --> <!--使用int校验器--> <field name="age"> <field-validator type="int" short-circuit="true"> <param name="min">18</param> <param name="max">100</param> <message>年龄必须在${min}到${max}之间</message> </field-validator> </field> <!-- 验证name字段必须为string类型 --> <!--使用requiredstring校验器--> <field name="name"> <field-validator type="requiredstring" short-circuit="true"> <message>姓名不能为空</message> </field-validator> </field> <!--使用stringlength校验器--> <field name="name"> <field-validator type="stringlength" short-circuit="true"> <param name="maxLength">15</param> <param name="minLength">6</param> <message>姓名长度必须为${minLength}到${maxLength}之间!</message> </field-validator> </field> </validators>
15.strust.xml
<?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> <!-- 如果 注解的action配置改变时候不需要重新启动tomcate --> <constant name="struts.i18n.encoding" value="utf-8"/> <constant name="struts.devMode" value="true"/> <constant name="struts.convention.classes.reload" value="false" /> <package name="default" extends="struts-default"> <action name="innerValidateAction" class="com.sh.action.InnerValidatorAction"> <result>/success.jsp</result> <result name="input">/login.jsp</result> </action> </package> </struts>
16.login.jsp
<body> <s:fielderror/> <s:form action="innerValidateAction" method="post" theme="simple"> 用户名:<s:textfield name="name"/><br/> 年龄:<s:textfield name="age"/><br/> <s:submit value="提交"/> </s:form> </body>
17.访问上
--http://localhost:8080/Struts2_validator/login.jsp
如果不输入就可以看到 验证的消息
18.使用 非字段校验器 InnerValidator1Action-validation.xml
<!--对于 字符类型的校验 个人发现 如果不定义requiredstring这个类型的校验 下面的 stringlength校验器 不起作用 ---> <validator type="requiredstring"> <param name="fieldName">name</param> <message>姓名不能为空!</message> </validator> <validator type="stringlength"> <param name="fieldName">name</param> <param name="maxLength">15</param> <param name="minLength">6</param> <message>姓名长度为${minLength}到${maxLength}之间!</message> </validator>
----------复合属性 校验------------
A:使用字段校验器
1.pojo
package com.sh.pojo; public class User { private String name; private String pwd; private String mobile; //get set }
2.action
package com.sh.action; import com.opensymphony.xwork2.ActionSupport; import com.sh.pojo.User; public class UserAction extends ActionSupport { private User user; @Override public String execute() throws Exception { // TODO Auto-generated method stub return SUCCESS; } //get set }
3.编写UserAction-validation.xml 校验文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <field name="user.mobile"> <field-validator type="requiredstring"> <!--去掉空格 --> <param name="trim">true</param> <message>手机号不能为空</message> </field-validator> <field-validator type="regex"> <param name="expression"><![CDATA[^1[358]\d{9}$]]></param> <message>手机号格式不正确</message> </field-validator> </field> </validators>
4.jsp
<body> <s:fielderror/> <s:form action="userAction" method="post" theme="simple"> 用户名:<s:textfield name="user.name"/><br/> 密码:<s:textfield name="user.pwd"/><br/> 手机版:<s:textfield name="user.mobile"/><br/> <s:submit value="提交"/> </s:form> </body>
5.访问
---http://localhost:8080/Struts2_validator/login2.jsp
--如果不填 或者格式错误会有提示的
B使用 visitor 校验复合属性
1.action
package com.sh.action; import com.opensymphony.xwork2.ActionSupport; import com.sh.pojo.User; public class VisitorAction extends ActionSupport{ private User user; @Override public String execute() throws Exception { // TODO Auto-generated method stub return SUCCESS; } //get set }
2.定义 aciton校验文件 VisitorAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <field name="user"> <field-validator type="visitor"> <!--复合类型属性的上下文校验名称 --> <param name="context">visitorContext</param> <!--是否添加前缀 如果true 就使用message--> <param name="appendPrefix">true</param> <message>联系人:</message> </field-validator> </field> </validators>
3.定义实体类User 的上下文校验文件User-visitorContext-validation.xml (和User同目录)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <field name="name"> <field-validator type="requiredstring"> <message>姓名不能为空!</message> </field-validator> </field> <field name="age"> <field-validator type="int"> <param name="min">10</param> <param name="max">100</param> <message>年龄为${min}到${max}之间</message> </field-validator> </field> </validators>
4.login3.jsp
<body> <s:fielderror/> <s:form action="visitorAction" method="post" theme="simple"> 用户名:<s:textfield name="user.name"/><br/> 年龄:<s:textfield name="user.age"/><br/> 手机版:<s:textfield name="user.mobile"/><br/> <s:submit value="提交"/> </s:form> </body>
5.struts.xml
<?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> <!-- 如果 注解的action配置改变时候不需要重新启动tomcate --> <constant name="struts.devMode" value="false"/> <constant name="struts.convention.classes.reload" value="true" /> <package name="default" extends="struts-default"> <action name="visitorAction" class="com.sh.action.VisitorAction"> <result>/index.jsp</result> <result name="input">/login3.jsp</result> </action> </package> </struts>
6.访问
--http://localhost:8080/Struts2_validator/login3.jsp
--没有输入的时候会看到验证信息
---------------集合属性校验---------------
1.action
package com.sh.action; import java.util.List; import com.opensymphony.xwork2.ActionSupport; import com.sh.pojo.User; public class VisitorListAction extends ActionSupport { private List<User> userlist; @Override public String execute() throws Exception { System.out.println("1"); return super.execute(); } //get set }
2.定义action的校验文 VisitorListAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <field name="userlist"> <field-validator type="visitor"> <!--复合类型属性的上下文校验名称 --> <param name="context">visitorContext2</param> <!--是否添加前缀 如果true 就使用message--> <param name="appendPrefix">true</param> <message>联系人:</message> </field-validator> </field> </validators>
3.定义集合中的对象 描述属性文件VisitorListAction-conversion.properties
(命名规则为 ActionNaqme-conversion.properties 具体的在 三十五 章里介绍)
Element_userlist=com.sh.pojo.User
4.定义集合对象校验文件User-visitorContext2-validation.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <field name="name"> <field-validator type="requiredstring"> <message>姓名不能为空!</message> </field-validator> </field> <field name="age"> <field-validator type="int"> <param name="min">20</param> <param name="max">120</param> <message>年龄为${min}到${max}之间</message> </field-validator> </field> </validators>
5.struts.xml
<?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> <!-- 如果 注解的action配置改变时候不需要重新启动tomcate --> <constant name="struts.devMode" value="true"/> <constant name="struts.convention.classes.reload" value="true" /> <package name="default" extends="struts-default"> <action name="visitorListAction" class="com.sh.action.VisitorListAction"> <result>/success.jsp</result> <result name="input">/visitorList.jsp</result> </action> </package> </struts>
6.visitorList.jsp
<body> <s:fielderror/> <form action="${pageContext.request.contextPath}/visitorListAction.action" method="post"> <ul style="list-style:none; text-align: center;"> <li style="float: left;width: 155px">用户名</li> <li style="float: left;width: 155px">密码</li> <li style="float: left;width: 155px">年龄</li> <li style="float: left;width: 155px">生日</li> <li style="float: left;width: 155px">地址</li> </ul> <div style="clear: both;"></div> <c:forEach items="new int[]{0,0,0,0}" varStatus="st"> <ul style="list-style:none;"> <li style="float: left"> <input name="userlist[${st.index}].name"/> </li> <li style="float: left"> <input name="userlist[${st.index}].pwd" /> </li> <li style="float: left"> <input name="userlist[${st.index}].age"/> </li> <li style="float: left"> <input name="userlist[${st.index}].birthday" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'});"/> </li> <li> <input name="userlist[${st.index}].address" /> </li> </ul> </c:forEach> <div><input type="submit"/></div> </body>
7.访问
--http://localhost:8080/Struts2_validator/visitorList.jsp
--可以看到所设定的所有被校验的字段
-------------内置校验器 : required--------
1.用于要求户必须有值,(非null),
参数:fieldName:校验的字段名, 如果是字段校验则不用指定该参数。
2.用户 验证 一个对象是否为空
3.不能用来校验 string 类型的必填. 如果要校验 则使用 requiredstring。
4. required要求的是一个对象不能为null,它可以验证像Date类型的对象
5.requiredstring只是对字符串做限制
有参数 maxLength
minLength
trim
-------------内置校验器 :conversion-------
1.action
package com.sh.action; import com.opensymphony.xwork2.ActionSupport; public class IntAction extends ActionSupport { private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String execute() throws Exception { // TODO Auto-generated method stub return SUCCESS; } }
2,校验文件 IntAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <field name="age"> <field-validator type="conversion"> <!--复合类型属性的上下文校验名称 --> <param name="repopulateField">true</param> <!--是否添加前缀 如果true 就使用message--> <message>年龄必须为整数:</message> </field-validator> </field> </validators>
3.struts.xml
<action name="intAction" class="com.sh.action.IntAction"> <result name="success">/success.jsp</result> <result name="input">/int.jsp</result> </action>
4.int.jsp
<body> ==================使用内置校验器 类型转转校验器======================== <s:fielderror/> <s:form action="intAction" method="post" theme="simple"> 用户名:<s:textfield name="userName"/><br/> 年龄:<s:textfield name="age"/><br/> <s:submit value="提交"/> </s:form> </body>
5.访问
--http://localhost:8383/Struts2_validator/int.jsp
--如果不输入 就出现 年龄必须为整数:错误信息
--如果输入 字符 就会出现两个 错误信息
---其中一个错误信息是 Struts2框架的错误信息为英文 为了解决这个问题 下面可以 改为只能够为 中文 或者 置空 这样就只有一个错误提示 或者 连个中文提示
6.定义IntAction_zh_CN.properties
invalid.fieldvalue.age=properties文件:年龄必须整数 #或者xia'm #invalid.fieldvalue.age=
这样就会提示两个中文错误信息 (不过意思是一样的)
-------------------Date--------------
1,校验文件 DateAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <field name="age"> <field-validator type="date"> <!--复合类型属性的上下文校验名称 --> <param name="max">2012-12-20</param> <param name="min">1997-01-01</param> <message>生日应在 ${min}到${max}之间</message> </field-validator> </field> </validators>
-------------------Emal 和 URL--------------------
1.EmailUrlAction-validation.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <field name="email"> <field-validator type="email"> <message>邮件地址不正确</message> </field-validator> </field> <field name="url"> <field-validator type="url"> <message>网址格式不正确</message> </field-validator> </field> </validators>
------------------------expression 和 fieldexpression----------
expression 不能使用字段校验风格配置
fieldexpression 两种都可以使用
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <validator type="expression"> <param name="expression">max2 > min2</param> <message>max1要大于 min1</message> </validator> <field name="max2"> <field-validator type="fieldexpression"> <param name="expression">max2 > min2</param> <message>max2要大于 min2</message> </field-validator> </field> </validators>
--------------------double----------------------
<field name="sal"> <!-- 10<=sal<=100 --> <field-validator type="double"> <!-- 允许的最大值 --> <param name="minInclusive">10</param> <!-- 允许的最大值 --> <param name="maxInclusive">100</param> <message>${minInclusive}大于等于 薪水 小于等于 ${maxInclusive}</message> </field-validator> <!-- 10<sal<100 --> <field-validator type="double"> <!-- 允许的最大值 --> <param name="minExclusive">10</param> <!-- 允许的最大值 --> <param name="maxExclusive">100</param> <message>"${minInclusive}大于 薪水 小于 ${maxInclusive}"</message> </field-validator> </field>
-----------------------regex-----------------------
<field name="mycode"> <field-validator type="regex"> <param name="expression"> <![CDATA[[0-9]\d{5}(?!\d)]]> </param> <message>不是有效的邮政编码!</message> </field-validator> </field>
------------------自定义校验器--------------
1.action
package com.sh.action; import com.opensymphony.xwork2.ActionSupport; public class MyValidateAction extends ActionSupport { private String name; @Override public String execute() throws Exception { // TODO Auto-generated method stub return SUCCESS; } //get set }
2.自定义一个校验器类 继承相应的 校验接口 就可以了 MyValidate .java
package com.sh.validate; import com.opensymphony.xwork2.validator.ValidationException; import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport; public class MyValidate extends FieldValidatorSupport { private String name; //对应<param name="name"/> public void validate(Object object) throws ValidationException { // TODO Auto-generated method stub String fieldName=super.getFieldName(); String value=super.getFieldValue(fieldName, object).toString(); if(!name.equals(value)){ super.addFieldError(super.getFieldName(), object); } } public String getName() { return name; } public void setName(String name) { this.name = name; } }
3.在框架中注册自定义的校验器类 编写 validators.xml (文件名固定)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator Definition 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd"> <validators> <validator name="myValidate" class="com.sh.validate.MyValidate"></validator> </validators>
4.使用自定义校验器类 编写 校验文件 MyValidateAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <field name="name"> <field-validator type="myValidate"> <param name="name">admin</param> <message>姓名必须为${name}!</message> </field-validator> </field> </validators>
5.struts.xml
<action name="myValidateAction" class="com.sh.action.MyValidateAction"> <result name="success">/success.jsp</result> <result name="input">/myValidator.jsp</result> </action>
6.myValidator.jsp
<body> ==================使用内置校验器 自定义校验器的使用======================== <s:fielderror/> <s:form action="myValidateAction" method="post" theme="simple"> 用户名:<s:textfield name="name"/><br/> 年龄:<s:textfield name="age"/><br/> <s:submit value="提交"/> </s:form> </body>
7.访问
--http://localhost:8383/Struts2_validator/myValidator.jsp
--如果输入就会出现 姓名必须为admin!的错误信息
- Struts2_validator.zip (3.3 MB)
- 下载次数: 78
发表评论
-
解决getOutputStream() has already been called for this response
2014-07-30 19:16 3320java.lang.IllegalStateException ... -
Struts2 + ajaxFileUpload 异步上传文件
2013-12-04 19:33 1892ajaxFileUpload下载地址http://www.ph ... -
Struts2 Action 解析提交的XML
2013-10-16 12:30 1640package com.bjdata.bjsearch.p ... -
MyBatis+Spring+Struts2
2012-11-28 00:32 10627MyBatis3.1.1+Spring3.1.2+Struts ... -
Ibatis 整合spring + Struts2 加入OSCACHE
2012-11-14 00:10 4562说明: 使用 spring2.5 +ibatis2.3 ... -
Struts2中使用JfreeChart
2012-11-06 09:02 16451.jar commons-fileupload-1.2.2. ... -
Struts2整合SiteMesh
2012-11-05 10:33 76601.导入Struts2的jar 和 sitemesh.jar ... -
Struts2 编写安全策略(四十五)
2012-09-23 23:53 2298编写安全策略 包含(1 ... -
SSH2整合完整案例(四十三)
2012-09-14 09:34 20690注解配置:Struts2+Spring2.5+Hibernat ... -
Struts2 阻止表单重复 和 等待页面(四十四)
2012-09-23 21:13 2146表单重复提交现象 导 ... -
Struts2 文件上传,下载,删除(四十一)
2012-09-10 23:37 12337本文介绍了: 1.基于表单的文件上传 2.Struts 2 的 ... -
Struts2 文件上传,下载的类型(四十二)
2012-09-06 23:18 2003声明: 以下复制他人的!!! Struts2 文件上传 之 ... -
Struts2 常用标签使用(三十九)
2012-09-03 09:28 64311.append标签 使用append标签可以把多个集合对 ... -
Struts2 timer拦截器(三十二)
2012-08-31 02:17 20741.Strus2系统拦截器中,timer拦截器可以实现输出Ac ... -
Struts2 常用标签使用(三十九)
2012-09-03 00:50 51.append标签 使用append标签可以把多个集合对 ... -
Struts2 主题和模版设置(四十)
2012-09-03 20:24 4146----------------Struts2 主题----- ... -
Struts2 如何使用OGNL表达式(三十八)
2012-08-30 20:55 50831.OGNL是Object Graph Navitagtion ... -
Struts2 使用Validation框架验证数据(三十七)
2012-08-29 14:08 9A:在Struts2的框架汇中,开发者可以通过继承Action ... -
Struts2 iterator 标签遍历 Map,List,数组(三十六)
2012-08-26 18:30 205311.使用iterator 标签 遍历 数组,Map,List ... -
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
2012-08-26 02:52 19183---------------List------------ ...
相关推荐
在Struts2中,Validation框架是用于处理数据验证的重要组件,它允许开发者在用户输入提交到服务器之前或之后进行验证,确保数据的准确性和完整性。下面将详细解释Struts2中的Validation框架及其在前后台验证中的应用...
在Struts2中集成Validation框架,可以实现更加健壮和一致的用户输入验证。 Struts2的核心是Action类,它是处理请求和业务逻辑的中心。每个Action都可以关联一个或者多个结果,根据不同的执行逻辑跳转到不同的页面。...
Struts2 验证框架是基于 Java 语言的 Web 应用程序框架,提供了一个强大的验证机制,以确保用户输入的数据满足业务逻辑的要求。在 Struts2 中,验证机制是通过 validator 来实现的,该机制可以对用户输入的数据进行...
- Struts 2中,Validation框架被更强大的Struts 2拦截器机制取代,提供了更灵活的验证方式和更丰富的功能。 深入研究Struts的Validation框架源码可以帮助开发者理解其内部工作原理,以便更好地自定义验证规则、...
通过上述步骤,我们已经了解了如何使用Struts Validation框架来实现表单验证。这不仅提高了应用程序的质量,还提升了用户体验。对于复杂的验证需求,还可以通过自定义验证器来扩展框架的功能。总的来说,Struts ...
综上所述,"Struts2_Validation"文件包很可能是围绕如何在Struts2中进行有效数据验证这一主题展开的,包括如何配置Validation.xml,编写验证规则,处理验证错误,以及如何结合其他Struts2特性进行更复杂的验证操作。...
Struts验证框架,作为Struts框架的一个重要组成部分,主要用于对用户输入的数据进行合法性检查,确保数据符合预期的格式和约束条件。这一机制不仅提升了应用程序的健壮性,还增强了用户体验,避免了因非法数据导致的...
在Struts2中,验证框架是其核心特性之一,它允许开发者对用户输入的数据进行校验,确保数据的完整性和安全性。这个“struts2验证框架示例”提供了深入理解并实际操作Struts2验证功能的机会。 首先,让我们了解一下...
Struts2 Validation是Apache Struts框架的一个重要组成部分,主要用于处理Web应用中的数据验证。这个框架提供了灵活且强大的机制,帮助开发者实现对用户输入的有效性检查,确保数据的准确性和安全性。下面将详细介绍...
### Struts1.2中的Validation验证框架实现步骤详解 #### 一、环境配置与准备工作 在Struts1.2框架中实现验证功能首先需要完成环境配置。这包括添加必要的库文件(JAR包)、配置XML文件等。 ##### 1.1 添加...
在Struts中,Validation框架是用于处理用户输入验证的重要组件,它可以确保用户提交的数据符合预定义的规则,从而提高应用程序的安全性和用户体验。 在创建一个注册模块时,通常需要对用户的输入数据进行严格的验证...
本文将详细介绍Struts2验证框架的配置方法以及validation.xml文件中常用的验证规则。 ### 验证框架的配置 在Struts2中,验证主要通过在Action类的关联配置文件validation.xml中定义规则来实现。该文件通常与Action...
在Struts2框架中,验证框架是其一个重要组成部分,用于确保输入数据的准确性和完整性,从而防止因无效数据导致的程序异常或错误。本实例将带你深入理解Struts2验证框架的使用,以及在实际操作中可能遇到的问题和解决...
### Struts2框架验证——常见类型验证模板解析 #### 一、引言 在Web应用开发过程中,数据验证是确保应用程序稳定性和安全性的重要环节之一。Struts2作为一款流行的Java Web应用框架,提供了丰富的验证机制来帮助...
总的来说,Struts2 Validation提供了灵活的验证机制,帮助开发者确保数据质量,防止恶意输入,提高应用的安全性和用户体验。通过熟练掌握这一机制,我们可以构建出更加健壮和稳定的Web应用程序。在实际工作中,结合...
在Struts2中,验证框架是处理用户输入验证的关键部分,它确保了从客户端接收到的数据的质量和准确性。本示例将深入探讨Struts2验证框架的基本用法,特别适合初学者理解和掌握。 ### 一、Struts2验证框架概述 ...