Java Struts2类型转换器:将多个对象组成一个对象
我有一个要求,我需要将字符串转换为double或long 我应用了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
@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