Struts2 TypeConvertor:将多个对象组合成一个

时间:2014-11-21 11:09:05

标签: java struts2 annotations type-conversion

我有一个要求,我需要将String转换为double或long。

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

无论如何我可以将isNumber传递给Struts2类型的转换器吗?或其他任何解决方法?

  Class XYZ{
       private boolean isNumber;

       private String value;


      @TypeConvertor
      public void setValue(){
      }
 }

1 个答案:

答案 0 :(得分:0)

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

行动:

  private Double doubleValue;

  public Double getDoubleValue() {
    return doubleValue;
  }

  @TypeConversion(converter = "com.struts.conversion.DoubleConverter")
  public void setDoubleValue(Double doubleValue) {
    this.doubleValue = doubleValue;
  }

<强> DoubleConverter.java

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[],包括isNumbervalue