今天做项目的时候,突然遇到个意想不到的问题,在我的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.***.rating.helper;
-
import java.math.BigDecimal;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
-
/**
* @author zhangyx
* @since 2009-12-18
*/
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 = null;
if(!doubleStr.equals("")){
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));
if(o instanceof Double){
Double d = (Double)o;
BigDecimal b = new BigDecimal(d.doubleValue()).setScale(2,BigDecimal.ROUND_HALF_DOWN);
return b.toString();
}
return o.toString();
}
-
}
然后,在class目录下新建一个文件:xwork-conversion.properties,内容如下:
- java.lang.Double=com.prl.helper.DoubleConvert
java.lang.Double=com.prl.helper.DoubleConvert
这是个全局转换器,以后只要遇到double型的字段,都可以通过这个转换器来转换。
重启tomcat,提交表单,运行成功。
相关推荐
类型转换在Struts2中主要通过实现ognl.TypeConverter接口来完成。当需要自定义转换器时,你需要创建一个类并实现这个接口,提供convertFromString和convertToString两个方法,分别处理字符串到目标类型的转换和目标...
本篇文章将深入探讨Struts2中的类型转换机制,包括常规类型转换、自定义类型转换以及错误处理。 首先,我们来看**常规类型转换**。Struts2框架内建了一套完整的类型转换器,能够自动处理常见数据类型,如String、...
Struts2提供了丰富的内置类型转换器,可以自动地将用户提交的数据转换为所需的Java数据类型,如`String`、`Integer`、`Double`、`Date`等。这些内置转换器极大地简化了开发者的工作量,并且确保了数据的有效性和一致...
在Struts2中,输入校验发生在类型转换成功后,且在`execute`方法执行之前。服务器端校验通常更为重要,因为它能防止恶意用户绕过客户端校验。 **编程式输入校验**涉及到覆盖`ActionSupport`类的`validate`方法,此...
类型转换在Struts2中扮演着关键角色,因为它使得开发者无需手动处理字符串到其他类型的数据转换。Struts2内置了一系列常见的类型转换器,可以处理基本类型如String、boolean、char、int、long、float、double以及...
Struts2 的类型转换是其框架中的一个重要特性,它允许开发者轻松地将用户提交的字符串数据转换为应用程序所需的各类数据类型。在 MVC 框架中,用户输入的数据通常是字符串形式,而Java作为强类型语言,需要将这些...
在Struts2中,类型转换是通过`ValueStack`和`TypeConverter`接口实现的。`ValueStack`负责管理Action对象,而`TypeConverter`接口则定义了如何将字符串转换为特定类型的逻辑。当Action属性需要被赋值时,Struts2会...
首先,Struts2框架提供了一系列内置的类型转换器,可以自动处理基本类型和常见类型的数据转换,如String到Integer、Double等。但当遇到自定义类型或特定需求时,我们需要自定义类型转换器。 自定义类型转换器需要...
默认情况下,Struts会尝试将表单中的字符串数据转换为对应的Java类型,例如Integer、Double或Date。然而,对于日期,Struts需要知道正确的日期格式,以便将用户输入的字符串解析为日期对象。如果格式不匹配,就会抛...
在Struts2中,类型转换是一个关键特性,它允许框架自动将用户输入的数据(通常是字符串)转换为应用程序所需的其他数据类型。本文将深入探讨Struts2的类型转换机制,以及如何利用这一特性来优化表现层的数据处理。 ...
### Struts2校验器类型详解 #### 一、Struts2内建校验器 在探讨Struts2校验器之前,我们首先需要了解这些校验器是如何被定义和集成到框架中的。如文中所述,Struts2的内建校验器主要位于`xwork-2.0.4.jar`压缩包中...
在Struts2中,类型转换主要由`Converter`接口实现,它的作用是将表单字段的数据转换为Java对象的属性。这个工程可能包含了各种类型的转换示例,如将字符串转换为整数、浮点数、日期等。Struts2默认提供了一些内置的...
因此,为了将这些字符串转换为Java中的各种数据类型,Struts2提供了类型转换功能。本文将深入探讨Struts2的类型转换器以及如何实现自定义类型转换器。 **一、类型转换的意义** 在Java中,数据类型具有严格的定义,...
在Struts2中,类型转换是一个关键机制,因为它允许我们将用户输入的字符串数据自动转换为我们需要的其他数据类型。 **类型转换的必要性** 在Web应用程序中,用户输入的数据通常以字符串形式存在,例如表单提交的...
输入校验的流程在Struts2中是结构化的,涉及多个步骤: 1. **类型转换**:首先,Struts2框架使用类型转换器将HTTP请求中的字符串参数转换为相应的Java类型,如Integer、Date等,并将这些值设置为Action类的属性。 ...
在Struts2中,类型转换是通过`TypeConverter`接口实现的,它负责将请求参数转换为Action类中的属性类型。默认情况下,Struts2提供了一些内置的类型转换器,如将字符串转换为基本数据类型(如int、double)或日期等。...
在传统的MVC框架中,这种转换通常需要手动进行,但在Struts2中,这一过程被自动化了。 Struts2内建了一套类型转换机制,可以自动将字符串转换为以下基本类型:boolean、char、int、long、float、double、Date以及...
在Struts2中,可以使用迭代器(`<s:iterator>`标签)配合动态属性(`name`属性使用表达式语言)实现批量保存对象。例如,创建一个包含学生列表的Action属性,并在JSP页面中使用迭代器为每个学生创建输入字段。然后,...
类型转换在Struts2框架中扮演着至关重要的角色,它解决了前端展示数据与后端处理数据之间的类型不匹配问题。在Web开发中,前端往往以字符串形式处理数据,而后端则可能需要更复杂的类型如`int`、`boolean`、`Date`等...