博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2类型转换
阅读量:6614 次
发布时间:2019-06-24

本文共 2108 字,大约阅读时间需要 7 分钟。

1.Struts2中为什么要类型转换?
  HTML表单采集数据 →提交表单 →Action
  底层依赖HTTP传递数据,而HTTP协议中 没有 “类型” 的概念. 每一项
表单输入只可能是一个字符串或一个字符串数组。因此在服务器端Action
中 必须把 String 转换为业务需要的特定的数据类型
2.Struts2中如何传递请求参数给Action?
  Struts2框架会将表单的参数以同名的方式设置给对应Action的属性中。
该工作主要是由Parameters拦截器做的。而该拦截器中已经自动的实现了
String到基本数据类型之间的转换工作。类似于: Beanutils工具。
  
  注意:
  • String到基本数据类型的转换是自动的。
  • String到Date日期类型的转换是有条件的。
    默认输入框输入的格式必须是yyyy-MM-dd,其他格式无法转换。
  • 如果类型自动转换错误,那么Struts2框架默认会找名为input的result进行处理。因此开发者需要在此Action的result配置中配置一个名为input的result。前提: 继ActionSupport
  • 如果封装请求参数的时候出现乱码问题,那么请查看表单的提交方式是否是post。Struts2默认的编码方式是utf-8。
3.Struts2自定义类型转换器
  1、自定义转换器继承StrutsTypeConverter
  2、重写convertFromString和convertToString方法
  3、注册转换器
    3.1 在Action所在包中建立Action名-conversion.properties
    3.2 在3.1文件中添加以下数据需要转换的字段名=自定义转换器类的权限定名
      user.brithday=com.dazhi.converter.DateTypeConverter
  注意:
  • 以上的转换器注册时候是与Action的名字相耦合的,因此只能在自己的Action中内部使用,称之为局部转换器注册方式。
 
  import org.apache.struts2.util.StrutsTypeConverter;
 
  import java.text.ParseException;
  import java.text.SimpleDateFormat;
  import java.util.Date;
  import java.util.Map;
 
  public class DateTypeConverter extends StrutsTypeConverter {
    @Override
    public Object convertFromString(Map map, String[] strings, Class aClass) {
      System.out.println("values is"+ strings[0]+" class"+aClass);
 
      if(strings[0]==null){
        return null;
      }
      Date date = null;
      SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
      try {
        date = simpleDateFormat.parse(strings[0]);
      } catch (ParseException e) {
        e.printStackTrace();
      }
      return date;
  4.Struts2中如何自定义全局类型转换器?
    实现的接口和继承的类都是相同的,本质上就是配置的方式不同。
    1、自定义转换器继承StrutsTypeConverter
    2、重写convertFromString和convertToString方法
    3、注册转换器
      3.1 在项目src目录下建立以下固定文件
        xwork-conversion.properties
      3.2 在3.1文件中添加以下数据
        需要转换的类类型=转换器类的权限定名
        如: java.util.Date= cn.itcast.converter.DateConverter
    总结
    该拦截器负责对错误信息进行拦截器<interceptor name="conversionError“
    class="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor"/>

转载于:https://www.cnblogs.com/sgx0214/p/7566857.html

你可能感兴趣的文章