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封装所有字符串

你可能感兴趣的:(freemarker,bean,Web,struts,JSF)