在tapestry4中,如果表单中有文件上传组件和文本输入框,则表单提交后文本输入框中输入的中文将变为乱码,我的页面、java文件都是GBK编码,网上有人说都采用utf-8编码就可以也不敢试。
跟了一下tapestry代码,发现textfield组件使用了translator进行了输入值的转换,于是自己定义了一个translator来转换中文输入为正确的编码格式。
1.定义自己的转换器:

package org; public class MyStringTranslator extends StringTranslator ...{


protected Object parseText(IFormComponent field, ValidationMessages messages, String text) ...{
String myText = null;

try ...{
myText = new String(text.getBytes("iso-8859-1"),"GBK");

} catch (Exception ex) ...{
myText = text;
}
return myText
}

}


protected Object parseText(IFormComponent field, ValidationMessages messages, String text) ...{
String myText = null;
try ...{
myText = new String(text.getBytes("iso-8859-1"),"GBK");
} catch (Exception ex) ...{
myText = text;
}
return myText
}
}2.在hivemoudle中配置这个转换器:
<contribution configuration-id="tapestry.form.translator.Translators">
<bean name="mystring" class="org.MyStringTranslator"/>
</contribution>
<bean name="mystring" class="org.MyStringTranslator"/>
</contribution>
3.在html或者page中使用这个转换器:
<span jwcid="@TextField" value="ognl:value" translator="translator:mystring"/>
本文介绍了解决Tapestry4框架中表单提交中文乱码的问题,通过自定义转换器MyStringTranslator实现对中文输入的正确编码转换。
9853

被折叠的 条评论
为什么被折叠?



