你的位置:首页 > Java教程

[Java教程]请求参数到表述层的数据类型转换


一、简介

说明:HTTP 协议传输数据没有类型的概念,在服务器端是通过 request.getParameter()、request.getParameterValue() 方法得到请求参数为 String 或 String[] 类型。

但是这样使用起来不方便,我们希望开源框架能自动的完成类型转换,到使用的时候能直接获取目标类型。

二、Struts2 类型转换

1. Struts2 本身完成了字符串类型到基本数据类型的自动转换,其他情况需要我们定义自己的类型转换器。=

2.类型转换失败时的处理方式

(1) 默认情况下 Struts2 对于类型转换失败后是不做任何处理的。

(2) 若请求参数到目标基本类型转化出错时,会对目标基本类型赋值为默认值。

(3) 若请求参数到目标基本类型包装类转化出错时,会对目标字段赋值为 null。

(4) 若希望在发生错误时给出提示,则需要让目标 Action 类实现 com.opensymphony.xwork2.ValidationAware 接口,这个接口 ActionSupport 已经帮我们实现。

说明:com.opensymphony.xwork2.ValidationAware

包含了 ActionErrors 和 FieldErrors 两个级别的错误消息,实现了该接口的 Action 类,在类型转换出错时,会前往 name=input 的 result,若没有配置,则返回404。

(5) 在错误显示页面,可以从值栈的 Action 类中获取到错误消息,且此错误消息可以自定义。

自定义错误提示消息:在当前 Action 类所在的包下添加 ActionName.properties 的属性文件,然后在该属性文件中添加如下键值对:

invalid.fieldvalue.目标字段名=定制的错误提示消息

(6) 在值栈中,错误消息的数据结构为:Map<String, List<String>>,可以通过 OGNL 表达式的方式来获取,也可以通过 Struts2 标签来获取,如下:

<s:fielderror fieldName="errorFiledName"></s:fielderror>

3.自定义类型转换器

 

 

4.复杂类型数据的类型转换

 

 

 

5.集合元素对象中的类型转换

 

 

6.json类型的数据的类型转换

 

 

未完,待续。