类型转换

概述

从一个HTML表单到一个动作对象,类型转换将是从字符串到非字符串.因为HTTP没有“类型”的概念,所以一切表单输入都将以请求参数的形式被发送到服务器,而每一项表单输入之可能是一个String或一个String数组。在服务器端,必须先把这些String值转换为特定的数据类型,才能进行相应的处理

把请求参数映射到动作属性的工作由Parameters拦截器负责,它是defaultStack拦截器栈的一员。所有的请求参数都是String类型,但并非所有的动作属性都是String类型,所以每一种非String类型的动作属性需要对相关的请求参数进行类型转换。

struts2提供的转换解决方案

Struts2在类型转换失败时会发生错误,具体如何处理取决于你的动作类是否实现了com.opensymphony.xwork2.ValidationAware接口

1、 没有实现该接口:struts在遇到类型转换错误时仍会继续调用其动作方法,就好像什么问题都没有发生过那样。

2、 如果实现了该接口:struts在遇到类型转换错误时不会继续调用其动作方法,它将检查相关动作元素中是否包含着一个input结果。如果是,struts将把控制权转交给那个result元素;如果找不到这样的结果,struts将抛出一个异常。

注:如果你的动作类继承自com.opensymphony.xwork2.ActionSupport,就相当于你间接实现了com.opensymphony.xwork2.ValidationAware接口。

你可能感兴趣的:(类型转换)