• 通常,客户端浏览器提交的参数值都是字符串。在服务器端,Struts2框架会
根据set方法的参数类型自动进行转换。
但特殊情况下,默认的转换器可能满足不了要求。比如:
1、允许用户以多种格式输入日期值;
2、以特殊格式提交的参数值需要解析为自定义类的对象。
• 自定义类型转换器
1、类型转换类通常继承org.apache.struts2.util.StrutsTypeConverter并实现其中的
抽象方法。
2、在xwork-conversion.properties文件中配置目标类型和转换器类的对应关系。
例:
com.si.vo.MyType=com.sxt.converter.MyTypeConverter
• 自定义类型转换器,不仅用于参数的装载,JSP页面输出此类型对象时,Struts2也
会使用该转换器。
【示例】
• 在自定义的转换器类中,如果发现参数值格式错误不能进行转换,想让Struts2框
架不执行目标Action类中的方法并跳回当前输入页面,则需如下配置:
1、在类型转换器中抛出TypeConversionException异常
2、自定义Action需继承自ActionSupport;
3、 在struts.xml文件中添加name=“input”的<result>节点,设置输入页面的路径。
【示例】
• 如果转换器中的方法抛出了TypeConversionException异常,struts2框架会调用Action
实例中的addFieldError()方法添加一条错误消息,消息内容取自
com.opensymphony.xwork2包中的xwork-messages.properties文件,消息key为:
xwork.default.invalid.fieldvalue 。
• 如果要自定义错误消息,有两种解决办法:
1、全局消息资
在struts.xml中定义消息资源文件:struts.custom.i18n.resources=messages
然后在messages.properties文件中添加xwork.default.invalid.fieldvalue对应的消息内容。
2、Action级别消息资源
在 ActionName.properties文件中定义invalid.fieldvalue.[fieldname]=[message content]
【示例】
网友评论