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


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
}

}















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中使用这个转换器:
