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あなたの名前は何ですか?
誰もが何か考えを持っています、私は何を間違っていますか?