`
徜徉の小溪
  • 浏览: 444162 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

struts2类型转换机制

阅读更多

struts2类型转换机制

package com.opensymphony.xwork2;
public class ActionSupport implements Action,ValidationAware,Validateable,TextProvider,LocalProvider,Serializable,ContinuableObject{
protected transient static final Log LOG = LogFactory.getLog(ActionSupport.class);
private transient final TextProvider textProvider = new  TextProviderSupport(getClass(),this);
private final ValidationAwareSupport validationAware = new ValidationAwareSupport();
//设置action级别的所有错误
public void setActionError(Collection errorMessages){
 validationAware.setActionErrors(errorMessages);
}
//获得action级别的错误集合
public Collection getActionErrors(){
 return validationAware.getActionErrors();
}
public Map getErrors(){
 return getFieldErrors();
}
public Locale getLocale(){
 return ActionContext.getContext().getLocale();
}
public String getText(String aTextName){
 return textProvider.getText(aTextName);
}
//向action添加一个action级别的错误
public void addActionError(String anErrorMessage){
 validationAware.addActionError(anErrorMessage);
}
public String doinput() throws Exception(){
 return INPUT;
}
public boolean hasActionErrors(){
 return validationAware.hasActionErrors();
}
//清除所有的错误信息
public void clearErrorAndMessage(){
 validationAware.clearErrorAndMessages();
}
public void validate(){
}
public void pause(String result){
}
}
 

void addActionError(String anErrorMessage)---向action添加一个action级别的错误
void addActionMessage(String aMessage)--向action添加一个action级别的信息
void addFieldError(String fieldName,String errorMessage)--为指定的域添加一个出错信息
void clearErrorsAndMessages()--清除所有的错误和信息
String execute()--其缺省的实现仅返回SUCCESS
Collection getActionErrors()--获得Action级别的错误集合
Collection getActionMessages()--获得Action级别的信息集合
Map getText(String aTextName)--获得与域相关的错误信息集合
String getText(String aTextName)--基于键指定的键值,不存在则返回NULL
String getText(String aTextName,List args)--基于键和附加参数获得指定的键值,不存在则返回NULL
String getText(String aTextName,String defaultValue)--基于键获得指定的键值,不存在则返回缺省值
boolean hasActionErrors()--是否有Action级别的错误
boolean hasActionMessages()--是否有Action级别的信息
boolean hasErrors()--是否有错误,包括域和Action级别的
void pause(String result)--暂停action的执行,抛出异常,并转向对应返回类型
void setActionErrors(Collection errorMessage)--设置action级别的所有错误
void setActionMessages(Collection mesages)--设置action级别的所有信息
void setFieldErrors(Map errorMap)--设置域级别的所有错误
void validate()--默认的空校验器
 

09.05.05
使用<bean/>元素在struts.xml文件中定义Bean,bean元素有如下几个属性:
class:这个属性是个必填属性,它指定了Bean实例的实现类,
type:这个属性是个可选属性,它指定了Bean实例实现Struts2规范,该规范通常是通过某个接口来体现的,因此该属性的值通常是一个Struts2接口,如果需要将Bean实例作为Struts2组件来使用,则应该指定该属性值;
name:该属性指定了Bean实例的名字,对于有相同type类型的多个Bean,则它们的name属性不能相同,这个属性也是个可选属性;
scope:该属性指定Bean实例的作用域。该属性市各可选属性,属性值只能是default、singleton、request、session或thread其中之一。
static:该属性指定Bean是否使用静态方法注入,通常而言,当指定了type属性时,该属性不应该指定为true。
optional:该属性指定该Bean是否是一个可选Bean,该属性市一个可选属性。

struts2框架加载Struts2常量的顺序:
1.struts-default.xml:该文件保存在struts2-core-2.0.6.jar
2.struts-plugin.xml:该文件保存在struts2-Xxx--2.0.6.jar
3.struts.xml:该文件是web应用默认的struts2配置文件
4.struts.properties:该文件是web应用默认的struts2配置文件
5.web.xml:该文件是web应用的配置文件
如果在多个文件中配置了同一个Struts2常量,则后一个文件中配置的常量会覆盖前面文件中配置的常量值;
如 果某个包没有指定namespace属性,即该包使用默认的命名空间,则默认的命名空间总是"",当某个包指定了命名空间以后,该包下所有的Action 处理URL应该是命名空间+Action名,例如如果namespace指定的是get,该包下包含getBooks的Action,则应该显示的URL 为:http://localhost:8080/namespace/book/getBooks.action
为了直接访问Servlet API,Struts2提供了一个ServletActionContext,这个类包含了如下几个静态方法:
static PagContext getPagContext():取得Web应用的PagContext对象
static HttpServletRequest getRequest():取得Web应用的HttpServletRequest对象
static HttpServletResponse getResponse():取得Web应用的HttpServletResponse对象
static ServletContext getServletContext():取得Web应用的ServletContext对象
在配置dispatcher结果类型时,指定default="true"属性,该属性表明该结果类型是默认的结果类型—这也是为什么当定义<result.../>元素时,如果省略了type属性,默认type属性为dipatcher的原因:
struts2内建结果类型:
chain结果类型:Action链式处理结果类型
chart结果类型:用于整合JFreeChart的结果类型
dispatcher结果类型:用于JSP整合的结果类型
freemarker结果类型:用于FreeMarker整合的结果类型
httpheader结果类型:用于控制特殊的HTTP行为的结果类型
jasper结果类型:用于JasperResports整合的结果类型
jsf结果类型:用于与JSF整合的结果类型
rdirect结果类型:用于直接跳转到其他URL的结果类型
redirect-action结果类型:用于直接跳装到其他Action的结果类型
stream结果类型:用于向浏览器放回JnputStream
tiles结果类型:用于与Tiles整合的结果类型
velocity结果类型:用于与Velocity整合的结果类型
xslt结果类型:用于与XML/XSLT整合的结果类型
plaintext结果类型:用于显示某个页面的原始代码的结果类型

实现类型转换器的关键是实现convertValue方法,该方法的参数如下:
1、context是类型装换环境的上下文
2、value是需要装换的参数,随着装换方向的不同,value参数的值也是不一样的,当把字符串类型向User类型装换时,value是原始字符串数组,当需要把User类型向字符串类型转换时value是User的事例;
3、toType是转换后的目标类型;
convertValue 方法返回的值就是类型装换后的值,该值的类型也会随转换方向的不同而不同,当把字符串向User类型转换时,返回值类型就是User类型,当需要把 User类型向字符串类型转换时,返回值类型就是字符串类型,所以, convertValue方法是接受需要转换的值,需要转换的目标类型为参数,然后返回转换后的目标值;
struts2内建的类型转换器:
1、boolean和Boolean:完成字符串和布尔值之间的转换
2、char和Character:完成字符串和字符之间的转换
3、int和Integer:完成字符串和整型值之间的转换
4、long和Long:完成字符串和长整型值之间的转换
5、float和Float:完成字符串的单精度浮点值之间的转换
6、double和Double:完成字符串和双精度浮点值之间的转换
7、Date:完成字符串和时间之间的转换,日期格式使用用户请求所在Locale的SHORT格式
8、数组:在默认情况下,数组元素是字符串,如果用户提供了自定义类型转换器,也可以是其它符合类型的数组
9、集合:在默认情况下,假定集合元素类型为String,并创建一个新的ArrayList封装所有字符串

分享到:
评论

相关推荐

    Struts2全解Struts2全解

    1、struts2概述 Struts2 软件下载 Struts2 比较重要的类 操作步骤及框架配置 struts运行机制 2、简单的struts2程序 ...9 struts2类型转换 ........ 10struts2标签库 ........ 11、访问数据库 ........

    Struts2入门教程(全新完整版)

    十、类型转换 57 1.基于Action的直接属性转换 57 2.基于Action的间接属性vo转换 59 十一、注解配置 59 十二、总结 本教程对struts2的基本知识进行了一些说明,关于struts2的更多详细内容应参看struts2的官方文档及...

    深入浅出struts2

    Struts2中的Action都是POJO,这一方面增强了Action本身的可测试性,另一方面也减小了框架内部的耦合度,而HTML表单中的输入项都被转换成了恰当的类型以供action使用。开发人员还可以通过拦截器(可以自定义拦截器...

    struts2工作原理及拦截器和过滤器

    3. 在 Web 容器启动时,Struts2 框架会自动加载配置文件里的相关参数,并转换成相应的类,如 ConfigurationManager、ActionMapper 和 ObjectFactory。ConfigurationManager 存有配置文件的一些基本信息,...

    Java Web程序设计教程

    6.2.1struts2内置类型转换器 117 6.2.2引用类型的转换方式 117 6.2.3特殊对象的类型转换 118 6.2.4类型转换的错误处理 121 6.3输入校验 123 6.3.1输入校验的必要性 123 6.3.2编程方式实现输入校验 125 6.3.3...

    springMVC学习

    SpringMVC 提供了类型转换机制,可以将请求参数转换为 Java 对象。类型转换机制可以帮助开发者更方便地处理请求参数。 八、JSON 格式数据的输入和输出 SpringMVC 提供了 JSON 格式数据的输入和输出机制,可以帮助...

    外文翻译 stus MVC

    Struts is a set of cooperating classes, servlets, and JSP tags that make up a reusable MVC 2 design. This definition implies that Struts is a framework, rather than a library, but Struts also contains...

    Java学习笔记-个人整理的

    {1.6}数据类型转换}{26}{section.1.6} {1.7}方法}{26}{section.1.7} {1.8}运算符}{27}{section.1.8} {1.8.1}自增运算}{28}{subsection.1.8.1} {1.8.1.1}Postincrement}{28}{subsubsection.1.8.1.1} {1.8.1.2}...

    java面试题

    传统的类型转换。 49 66.1.2. 通过Class对象来获取对象的类型。 49 66.1.3. 通过关键字instanceof或Class.isInstance()方法 49 67. 说出一些常用的类,包,接口,请各举5个 50 68. XML文档定义有几种形式?它们之间...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     B.2 运用反射机制来持久化Java对象 附录C 用XDoclet工具生成映射文件  C.1 创建带有@hibernate标记的Java源文件  C.2 建立项目的目录结构  C.3 运行XDoclet工具 附录D 发布和运行netstore应用  D.1 运行...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     B.2 运用反射机制来持久化Java对象 附录C 用XDoclet工具生成映射文件  C.1 创建带有@hibernate标记的Java源文件  C.2 建立项目的目录结构  C.3 运行XDoclet工具 附录D 发布和运行netstore应用  D.1 运行...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     B.2 运用反射机制来持久化Java对象 附录C 用XDoclet工具生成映射文件  C.1 创建带有@hibernate标记的Java源文件  C.2 建立项目的目录结构  C.3 运行XDoclet工具 附录D 发布和运行netstore应用  D.1 运行...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     B.2 运用反射机制来持久化Java对象 附录C 用XDoclet工具生成映射文件  C.1 创建带有@hibernate标记的Java源文件  C.2 建立项目的目录结构  C.3 运行XDoclet工具 附录D 发布和运行netstore应用  D.1 运行...

    ThinkPHP v5.0.0 RC4.zip

    增加更多的类型自动转换支持 增加全局查询范围 toJson/toArray支持隐藏和增加属性输出 增加远程一对多关联 [其它] 日志存储结构调整 Trace调试功能从日志类独立并增强 原Input类功能并入Request类 类库映射...

    Java 面试题 word文档

    3. 数据类型之间的转换 - 如何将数值型字符转换为数字(Integer,Double) - 如何将数字转换为字符 - 如何取小数点前两位,并四舍五入。 4. 日期和时间 - 如何取得年月日,小时分秒 - 如何取得从 1970 年...

    千方百计笔试题大全

    53、数据类型之间的转换: 14 54、字符串操作:如何实现字符串的反转及替换? 14 55、编码转换:怎样将GB2312 编码的字符串转换为ISO-8859-1 编码的字符串? 14 56、写一个函数,要求输入一个字符串和一个字符长度,...

    java面试宝典

    53、数据类型之间的转换: 14 54、字符串操作:如何实现字符串的反转及替换? 14 55、编码转换:怎样将GB2312 编码的字符串转换为ISO-8859-1 编码的字符串? 14 56、写一个函数,要求输入一个字符串和一个字符长度,...

Global site tag (gtag.js) - Google Analytics