`
徜徉の小溪
  • 浏览: 448723 次
  • 性别: 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 类型转换器”主要指的是Struts2框架中处理请求参数到Action类属性绑定过程中的类型转换机制。在HTTP请求中,表单数据通常以字符串形式传递,而Action类的属性可能是各种类型,如整型、浮点型、...

    STRUTS2类型转换

    总的来说,Struts2的类型转换机制为开发者提供了灵活的输入数据处理方式,既可以利用内置转换,也可以自定义转换器以适应复杂的业务场景。正确理解和使用这一机制,可以提高代码的可维护性和用户体验,确保数据的...

    Struts2类型转换(一)----常规类型,自定义类型,错误处理

    本篇文章将深入探讨Struts2中的类型转换机制,包括常规类型转换、自定义类型转换以及错误处理。 首先,我们来看**常规类型转换**。Struts2框架内建了一套完整的类型转换器,能够自动处理常见数据类型,如String、...

    struts2类型转换和国际化

    Struts2是一个流行的Java Web框架,它...总的来说,Struts2的类型转换机制确保了请求数据与Action属性之间的无缝转换,而国际化支持则使得应用能够适应全球化的用户需求。这两个特性极大地提高了开发效率和用户体验。

    struts2简单实例(类型转换)

    Struts2框架提供了一种机制,即类型转换器(Type Converter),用于自动将请求参数转化为预期的数据类型。 在Struts2中,实现类型转换主要有两种方式: 1. 使用内置的类型转换器:Struts2已经内置了一些常见的类型...

    struts2类型转换

    本篇文章将深入探讨Struts2中的类型转换机制。 1. **类型转换的概念** 类型转换是指将一个数据类型的值转换为另一个数据类型的过程。在网络请求中,用户输入的数据通常是字符串类型,而服务器端的Action类属性可能...

    struts2类型转换 拦截器 校验的例子

    Struts2内置了一套类型转换机制,能够自动将字符串数据转化为预设的类型。如果默认的转换器无法满足需求,开发者可以自定义转换器,通过实现`Converter`接口并注册到配置中,来实现特定类型的转换。 接下来,我们...

    Struts处理类型转换错误,如时间转换

    2. **Struts2的类型转换机制** Struts2使用OGNL(Object-Graph Navigation Language)表达式语言来映射请求参数到Action对象。它默认提供了一些内置的转换器,如`String-to-Date`,用于自动进行类型转换。但是,...

    struts2数据类型转换器

    总的来说,了解和掌握Struts2的数据类型转换机制对于开发高效、健壮的Java Web应用至关重要。通过自定义转换器,我们可以灵活地控制数据的转换过程,确保应用程序能正确处理用户输入,避免因为类型不匹配导致的错误...

    struts2学习笔记三(第3讲.Struts2的类型转换)

    总之,Struts2的类型转换机制是其强大功能之一,它简化了数据绑定过程,使得开发者能够专注于业务逻辑,而不是数据转换的细节。理解并熟练掌握Struts2的类型转换,将有助于提高开发效率和代码质量。在实际项目中,应...

    struts2自定义数据类型转换练习

    总之,通过自定义数据类型转换器,我们可以对Struts2的默认转换机制进行扩展,以适应不同的业务需求。这不仅增强了框架的功能,也为我们的开发工作带来了便利。在练习中,你可以尝试创建不同的自定义转换器,并理解...

    struts2类型转换深入总结

    总之,Struts2的类型转换机制是其强大功能的一部分,它简化了Web开发中的数据处理,同时也提供了高度的灵活性和可定制性。通过对这一机制的深入研究,开发者可以更好地控制和优化应用程序的数据处理流程,提升用户...

    Struts2 ConverterType类型转换 案例源码

    首先,了解Struts2的类型转换机制。默认情况下,Struts2会根据Action类中属性的数据类型尝试进行自动转换。如果默认转换器无法处理特定类型的转换,我们可以编写自定义的Converter并将其注册到Struts2的配置中。在这...

    struts2自定义类型转换器

    首先,理解Struts2的类型转换机制。当Struts2接收到HTTP请求时,它会尝试将请求参数与Action类的属性进行绑定。这个过程涉及到了类型转换,Struts2内置了一套转换器机制,能够自动处理基本类型和一些常见类型的转换...

    Struts2 自定类型转换器(三十四)

    在Struts2框架中,自定义类型转换器是开发者为了满足特定需求,对框架默认的类型转换机制进行扩展的一种方式。Struts2允许我们创建自己的转换器类来处理输入数据,确保模型对象的属性能够正确地被转换为预期的数据...

    struts2的convert工程

    通过分析和实践这个"struts2的convert工程",开发者可以深入了解Struts2类型转换机制,提高处理用户输入数据的效率和准确性。同时,这也为构建更安全、更健壮的Web应用程序提供了基础。在实际项目中,理解并熟练运用...

    Struts自定义类型转换器

    本文主要介绍Struts1和Struts2中的自定义类型转换器,并探讨其实现机制。 #### 二、Struts1中的自定义类型转换器 在Struts1中,自定义类型转换器主要是通过继承`com.sun.org.apache.commons.beanutils.Converter`...

Global site tag (gtag.js) - Google Analytics