我有一个要求,我需要将String转换为double或long。
我已应用@TypeConvertor
的字段有时也包含String
。
正如在下面的代码片段中可以看到的,当我得到一个数字时,isNumber
属性为真。
无论如何我可以将isNumber
传递给Struts2类型的转换器吗?或其他任何解决方法?
Class XYZ{
private boolean isNumber;
private String value;
@TypeConvertor
public void setValue(){
}
}
答案 0 :(得分:0)
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;
}
<强> 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[]
,包括isNumber
和value
。