Struts 2 имеет неявное преобразование типа, которое принимает заботы о введенных пользователем параметрах типа cast, например. int, string, double, boolean и т. д. Но мое требование состоит в том, чтобы преобразовать содержимое области текстового поля в массив байтов, и для этого я создал класс конвертируемого типа.Ошибка преобразования типа Strust2 из массива String в байты?
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;
}
То же аннотаций на применены метод получения также. Теперь все кажется прекрасным. Я получаю правильные данные в методе действия. Но пока вы показываете данные на jsp, я получаю дополнительные символы с оригинальным контентом.
например. Пользовательский ввод: как вас зовут? это отображение на jsp: ¬íur [B¬óøTàxpwhat ваше имя?
У любого есть идея, Что я донг ошибаюсь?
Вы храните эту строку где-нибудь? Откуда у вас это получается? –
Мне нужно сохранить его в БД, но прямо сейчас я получаю его от входа в браузер (textarea) и отправляю обратно в браузер. – dpilwal