解决struts2中Double类型的转换问题

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:25   1703   0

今天做项目的时候,突然遇到个意想不到的问题,在我的usr.jsp中有一个:

<input size="10" value="0" name="creditLine" />,

这个对应到model里面的private Double creditLine;

@Column(name = "credit_line", precision = 10)
public Double getCreditLine() {
return this.creditLine;
}

public void setCreditLine(Double creditLine) {
this.creditLine = creditLine;
}

其它表单项都是string或者非Double型 ,

表示提交后,报错,提示找不到setCreditLine(String xx)方法,我的creditLine明明是Double型,为什么它非要给我换成String型呢,无奈之下,想到了自定义类型转换,于是写了个DoubleConvert如下:

package com.prl.helper;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

public class DoubleConvert extends StrutsTypeConverter {

 @Override
 public Object convertFromString(Map context, String[] values, Class toClass) {
  System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>调用类型转换");
  System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>" + toClass);
  if (Double.class == toClass) {
   String doubleStr = values[0];
   System.out.println("获取到的字符串" + doubleStr);
   Double d = Double.parseDouble(doubleStr);
   return d;
  }
  return 0;
 }

 @Override
 public String convertToString(Map context, Object o) {

  System.out.println(">>>>>>>>>>>>>>>>>>value  " + o);
  System.out.println("value instanceof Double  " + (o instanceof Double));
  return o.toString();
 }

}

然后,在class目录下新建一个文件:xwork-conversion.properties,内容如下:

java.lang.Double=com.prl.helper.DoubleConvert

这是个全局转换器,以后只要遇到double型的字段,都可以通过这个转换器来转换。

重启tomcat,提交表单,运行成功。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP