Struts2数据类型转换,数据验证
2016-10-20 16:49
519 查看
-
2、把数据库中某种类型的数据转成字符串显示在页面上 select查询
struts2实现的自动转换:
1:基本数据类型的转换
2:本地各式的日期类型(yyyy-MM-dd)———Date
3:把值是String[]类型的转换成了用“,+空格” 间隔的字符串
定义好的类型转换器需要注册:
a:该类型转换期只能被特定的类使用(局部的)
b:该类型转换器可以被全局使用(全局的)
1、把页面上的MM/dd/yyyy格式的日期转成Date类型
//第一个参数是OGNL上下文,第二个参数是被转换的数据,第三个参数是转成的类型
2、把Date类型的日期转成字符串
c、定义好的类型转换器需要注册
1、局部的类型转换器,文件名的命名规则:JavaBean的名称-conversion.properties
birthday=com.lzh.web.converter,MyConverter //键是字段名,值是类型转换器的类路径
2、定义全局的类型转换期,文件的命名规则是xwork-conversion.propertioe
Java.util.Date=com.lzh.web.converter.MyConverter(转换器包名+转换器类名)
/regist.jsp 数据回显
问题是回来了,但是没有显示数据
<%@ taglib uri=”/struts-tags” prefix=”s”%> struts的标签库
——只是显示错误信息,实现数据的回显,必须使用struts2的表单
struts2 的form和html的表单差不多
action:可以直接写动作
method:默认是post
enctype:表单编码的MIME类型
发生类型转换错误时为什么加入input结果视图就能实现数据回显?
拦截器conversionError实现的这个功能
注意:动作类必须继承ActionSupport
服务器端验证:
1、编程式验证:写代码验证:写死了,硬编码
验证写在Action中,动作类中必须继承ActionSupport。重写ActionSupport中的public void validate()方法
Struts2内部封装了一个Map,Map的键就是表单上的name的值,Map的值就是错误信息
StringUtils.isEmpty()——判断是否为null或空字符串,但是不去除空格
StringUtils.isBlank()—— 判断是否为null或空字符串,去除空格
默认:validate方法在所有方法执行之前执行,为了让不需要验证的不去执行validate方法,解决方式有两种:
1:使用注解:@SkipValidation(给不需要执行的方法前加)
2:验证的方法名:validate+动作方法名
public void validateRegist
public void validate(){
//验证用户名不能为空
if(StringUtils.isEmpty(user.getUsername())){
addFieldError(“username”,”用户名不能为空”);
}
}
2、声名式验证:写xml代码验证
通过xml文件实现验证
在动作类所在的包下创建xml文件
文件名有命名规则:动作类名-validation.xml,默认验证动作类中的所有动作方法
希望某些方法不被验证1、加注解!@SkipValidation
2、xml文件名改成:动作类名-动作名-validation.xml
在xml文件中加入dtd约束(struts——apps——lib下的xwork-core.jar包中找到xwork-validator-1.0.3.dtd)
基于字段的验证:
基于验证器的验证:
一、数据类型转换
1、struts内部自动将页面获取到的字符串类型的数据转为数据库中的类型的 insert,update,delete2、把数据库中某种类型的数据转成字符串显示在页面上 select查询
struts2实现的自动转换:
1:基本数据类型的转换
2:本地各式的日期类型(yyyy-MM-dd)———Date
3:把值是String[]类型的转换成了用“,+空格” 间隔的字符串
二、自定义类型转换器:
TypeConverter 的子类DefaultTypeConverter的子类 StrutsTypeConvrter定义好的类型转换器需要注册:
a:该类型转换期只能被特定的类使用(局部的)
b:该类型转换器可以被全局使用(全局的)
1、把页面上的MM/dd/yyyy格式的日期转成Date类型
//第一个参数是OGNL上下文,第二个参数是被转换的数据,第三个参数是转成的类型
public class MyConverter extends StrutsTypeConverter{ private SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); public Object convertFromString(Map arg0,String[] arg1, Class arg2){ //判断有没有被转换的数据 if(arg1==null||arg1.length==0) return null; //得到被转换的数据 String data = arg1[0]; if(arg2==java.util.Date.class){ try{ return sdf.parse(date); }catch(ParseException e){ e.prinStackTrace(); return null; } } return null; }
2、把Date类型的日期转成字符串
c、定义好的类型转换器需要注册
1、局部的类型转换器,文件名的命名规则:JavaBean的名称-conversion.properties
birthday=com.lzh.web.converter,MyConverter //键是字段名,值是类型转换器的类路径
2、定义全局的类型转换期,文件的命名规则是xwork-conversion.propertioe
Java.util.Date=com.lzh.web.converter.MyConverter(转换器包名+转换器类名)
三、没有自定义类型转换器时的错误处理
1、定义结果视图 input/regist.jsp 数据回显
问题是回来了,但是没有显示数据
<%@ taglib uri=”/struts-tags” prefix=”s”%> struts的标签库
——只是显示错误信息,实现数据的回显,必须使用struts2的表单
struts2 的form和html的表单差不多
action:可以直接写动作
method:默认是post
enctype:表单编码的MIME类型
发生类型转换错误时为什么加入input结果视图就能实现数据回显?
拦截器conversionError实现的这个功能
注意:动作类必须继承ActionSupport
<s:form action = "regist.action"> <s:textfield name="username" label="用户名"></s:textfield> <s:password name="password" label="密码" showPassword="true"></s:password> <s:textfield name="birthday" label="出生日期"></s:textfield> <s:submit value="注册"></s:submit> </s:form>
四、数据验证
客户端验证,服务器端验证服务器端验证:
1、编程式验证:写代码验证:写死了,硬编码
验证写在Action中,动作类中必须继承ActionSupport。重写ActionSupport中的public void validate()方法
Struts2内部封装了一个Map,Map的键就是表单上的name的值,Map的值就是错误信息
StringUtils.isEmpty()——判断是否为null或空字符串,但是不去除空格
StringUtils.isBlank()—— 判断是否为null或空字符串,去除空格
默认:validate方法在所有方法执行之前执行,为了让不需要验证的不去执行validate方法,解决方式有两种:
1:使用注解:@SkipValidation(给不需要执行的方法前加)
2:验证的方法名:validate+动作方法名
public void validateRegist
public void validate(){
//验证用户名不能为空
if(StringUtils.isEmpty(user.getUsername())){
addFieldError(“username”,”用户名不能为空”);
}
}
2、声名式验证:写xml代码验证
通过xml文件实现验证
在动作类所在的包下创建xml文件
文件名有命名规则:动作类名-validation.xml,默认验证动作类中的所有动作方法
希望某些方法不被验证1、加注解!@SkipValidation
2、xml文件名改成:动作类名-动作名-validation.xml
在xml文件中加入dtd约束(struts——apps——lib下的xwork-core.jar包中找到xwork-validator-1.0.3.dtd)
基于字段的验证:
<validators> <!-- 基于字段的验证 --> <field name="username"> <!-- 怎么验证,struts内部定义了很多的验证器 requiredstring判断是否为null,或空字符串,去空格 --> <field-validator type="requiredstring"> <message>用户名不能为空</message> </field-validator> </field> </validators>
基于验证器的验证:
<validators> <!-- 基于验证器的验证 --> <!-- 怎么验证,struts内部定义了很多的验证器--> <validator type="requiredstring"> <!-- 使用注入的方式指明验证谁 private String actionName setActionName()--> <param name ="fieldName">password</param> <message>用户名不能为空</message> </validator> </field> </validators>
相关文章推荐
- Struts2 (动态调用、接收请求参数、类型转换、数据验证、拦截器)Day:2018/2/7
- Struts2类型转换,数据验证
- Struts2 Chater 4&5 Struts2中的验证输入和数据类型的转换
- springMVC学习笔记七(基于注解方式的控制器的数据验证,类型转换和格式化)
- 解决struts2基础数据类型自动转换,输入字母报错问题!
- Struts2数据类型转换之批量数据转换
- 第七章 注解式控制器的数据验证、类型转换及格式化 SpringMVC数据格式化
- [ Struts2 ] 数据类型转换
- struts2(七)数据类型转换详解
- Struts2之简单数据类型转换
- SpringMVC数据格式化——注解式控制器的数据验证、类型转换及格式化
- springMVC学习笔记七(基于注解方式的控制器的数据验证,类型转换和格式化)
- Java程序员从笨鸟到菜鸟之(四十四)细谈struts2(七)数据类型转换详解
- Struts2基础学习之数据类型转换
- Struts2数据类型转换之自定义数据类型转换
- SpringMVC数据验证——注解式控制器的数据验证、类型转换及格式化
- 第七章 注解式控制器的数据验证、类型转换及格式化 SpringMVC数据验证
- struts2页面上double类型的数据转换成整数
- Struts2学习(第七篇)——数据类型转换详解
- Struts2数据类型转换之批量数据转换