struts2类型转换相关问题

一、类型转化错误时,如何处理?
  若Action类没有实现ValidationAware接口,在类型转化错误时,struts2会继续调用action方法,将该属性值置为默认值,不报错。
  若Action类实现了ValidationAware接口,在类型转化错误时,struts2会检查当前<action>是否配置了<result name="input">……</result>,若配置了,将控制权交给该<result>;若没有配置,报错:No result defined for action …… and result input。
二、如何显示类型转化失败时的错误消息?
  若form标签使用的是默认的主题(xhtml),则自动显示错误消息,默认的错误消息是:Invalid field value for field ……
  若form标签使用的是simple主题,使用<s:fielderror>标签显示。例如:<s:fielderror fieldName="name"/>
三、默认的错误消息是如何显示的?
  如果当前Action类实现了ValidationAware接口,conversionError拦截器(默认拦截器栈的一员)负责添加与类型转化相关的错误消息。
四、如何覆盖、定制默认的错误消息
  在当前字段的model所在的包下新建一个文件,文件名:字段所在类的类名.properties
  在该新建的文件中输入键值对,如下
    invalid.fieldvalue.表单中相应字段的name属性的值=定制的错误消息
五、自定义类型转化器
  1.为什么要自定义?
    params拦截器只能完成基本数据类型和字符串之间的类型转化,不能完成字符串和引用类型之间的转换。
    例如:字符串和日期之间的转化
  2.如何自定义?
   (1)开发一个类,继承StrutsTypeConverter
   (2)配置(两种方式)
    ①基于字段的配置(只能处理当前字段的类型装换异常)
      在字段所在的model所在的包下新建一个文件,文件名:字段所在类的类名-conversion.properties
      在该新建文件中输入键值对,如下
        待转换的字段名=自定义类型转换器的全类名
      基于字段配置的自定义类型转化器在第一次使用时创建实例,并且仅创建一次(单例)
    ②基于类型的配置(可以处理当前类型的所有字段的转换异常)
      在类路径下新建一个文件,文件名:xwork-conversion.properties
      在该新建文件中输入键值对,如下
        带转换类型的全类名=自定义类型转换器的全类名
      基于类型配置的自定义类型转化器在当前web应用被加载时创建。

上一篇:我为Net狂 ~ 社交平台系列小集合!


下一篇:2年java,蚂蚁一面,卒