使用Struts2升级注册的自定义int TypeConverter注册(2.1.6 - > 2.3.15)

时间:2013-09-06 13:49:46

标签: java struts2

我有一个使用struts2的java web应用程序(例如:2.3.15),我需要将类型转换应用于int字段。

该字段可以具有值“ - ”,并且我必须使用类型转换将其更改为0,但是当我发送表单时使用新版本的struts2返回到具有验证器错误的表单而不传递类型转换。

我写了以下代码:

package sistema.conversores;

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;

/**
 *
 * @author Administrador
 */
public class IntegerConverter extends StrutsTypeConverter {

    public Object convertFromString(Map context, String[] values, Class toClass) {
System.out.println("load");
        if (values.length != 1) {
            super.performFallbackConversion(context, values, toClass);
        }
System.out.println("conversion");
        final String numero = values[0];

        try {
            return Integer.parseInt(numero);
        } catch (Exception e) {
            return 0;
        }
    }

    public String convertToString(Map context, Object o) {
        final NumberFormat formatter = new DecimalFormat("#0");
System.out.println("lectura");
        if (o instanceof Integer) {
            return formatter.format(o);
        } else {
            return String.valueOf(o);
        }
    }
}

并将其附加到xwork-conversion.properties

# syntax: <type> = <converterClassName>
int = sistema.conversores.IntegerConverter
java.util.Date = sistema.conversores.DateConverter

但是int类型转换不能在Struts 2.3.15上运行,这适用于struts 2.1.6

由于ONGL错误,我需要升级版本:https://issues.apache.org/jira/browse/WW-3580

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题, 这是struts.xml和WEB-INF

上的struts.properties的一个问题

我做以下

  1. 从web-inf删除struts.properties,只需要xml
  2. 从previus版本中删除所有libreries并复制和更新库
  3. 这样做后所有类型的转换器开始正常工作