Struts 2 具有隐式类型转换,它处理用户输入的参数类型转换,例如 int、string、double、boolean 等。但我的要求是将富文本区域输入转换为字节数组,为此我创建了一个自定义类型转换器类。
public class StringToByteArrayConverter extends StrutsTypeConverter{
@Override
public Object convertFromString(Map context, String[] value, Class arg2) {
String val = value[0];
return val.getBytes() ;
}
@Override
public String convertToString(Map context, Object value) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream os;
try {
os = new ObjectOutputStream(out);
os.writeObject(value);
return new String(out.toByteArray());
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
在模型类中,我在属性设置器上指定了以下注释
@TypeConversion(converter="org.package.name.StringToByteArrayConverter")
public void setVarName(byte[] varName) {
this.varName = varName;
}
相同的注释也适用于 getter 方法。现在一切似乎都很好,我在 Action 方法中得到了正确的数据。但是在 jsp 上显示数据时,我得到了一些带有原始内容的额外符号。
例如。用户输入是:你叫什么名字?它显示在 jsp 上:¬íur[B¬óøTàxp你叫什么名字?
任何人有任何想法,我错了什么?