Java Struts2类型转换器:将多个对象组成一个对象

Java Struts2类型转换器:将多个对象组成一个对象,java,struts2,annotations,type-conversion,Java,Struts2,Annotations,Type Conversion,我有一个要求,我需要将字符串转换为double或long 我应用了@TypeConvertor的字段有时也可以包含字符串。 正如在下面的代码片段中所看到的,当我得到一个数字时,isNumber属性为true 我是否可以将isNumber传递给Struts2类型转换器?或者其他解决方法 Class XYZ{ private boolean isNumber; private String value; @TypeConvertor pu

我有一个要求,我需要将字符串转换为double或long

我应用了
@TypeConvertor
的字段有时也可以包含
字符串。
正如在下面的代码片段中所看到的,当我得到一个数字时,
isNumber
属性为true

我是否可以将
isNumber
传递给Struts2类型转换器?或者其他解决方法

  Class XYZ{
       private boolean isNumber;

       private String value;


      @TypeConvertor
      public void setValue(){
      }
 }

Struts2隐式执行到已知类型的基本类型转换,
double
long
是这些类型。因此,您不需要转换器来转换这些类型。但是,如果您需要类型转换器的自定义实现,您可以尝试

动作:

  private Double doubleValue;

  public Double getDoubleValue() {
    return doubleValue;
  }

  @TypeConversion(converter = "com.struts.conversion.DoubleConverter")
  public void setDoubleValue(Double doubleValue) {
    this.doubleValue = doubleValue;
  }
public class DoubleConverter extends StrutsTypeConverter {
  @Override
  public Object convertFromString(Map context, String[] values, Class toClass) {
    Object o = null;
    try {
      o = Double.valueOf(values[0]);
    } catch (NumberFormatException e){}
    return o;
  }

  @Override
  public String convertToString(Map context, Object o) {
    return o==null?"":o.toString();
  }
}
DoubleConverter.java

  private Double doubleValue;

  public Double getDoubleValue() {
    return doubleValue;
  }

  @TypeConversion(converter = "com.struts.conversion.DoubleConverter")
  public void setDoubleValue(Double doubleValue) {
    this.doubleValue = doubleValue;
  }
public class DoubleConverter extends StrutsTypeConverter {
  @Override
  public Object convertFromString(Map context, String[] values, Class toClass) {
    Object o = null;
    try {
      o = Double.valueOf(values[0]);
    } catch (NumberFormatException e){}
    return o;
  }

  @Override
  public String convertToString(Map context, Object o) {
    return o==null?"":o.toString();
  }
}
@TypeConversion
注释用于转换类型的属性。我已经在类型为
Double
的属性上应用了它,但是您可以尝试在类型为
XYZ
的属性上应用转换器

  @TypeConversion(converter = "com.struts.conversion.YourNumberConverter")
  public void setValue(XYZ value) {
    this.value = value;
  }
调用转换器时,您应该以
String[]
的形式获取所有值,包括
isNumber
value