【问题标题】:Struts2 TypeConvertor: Forming multiple object into oneStruts2 TypeConvertor:将多个对象合二为一
【发布时间】:2015-01-19 12:21:32
【问题描述】:

我有一个需求,我需要把String转换成double或者long。

我应用@TypeConvertor 的字段有时也可以包含String。 从下面的 sn-p 中可以看出,当我得到一个数字时,isNumber 属性为真。

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

  Class XYZ{
       private boolean isNumber;

       private String value;


      @TypeConvertor
      public void setValue(){
      }
 }

【问题讨论】:

    标签: java struts2 annotations type-conversion


    【解决方案1】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多