Tapestry 自带了3种类型的translator,包括string,date,number,可以验证客户前台的输入,并进行自动类型转换。
我们自己也可以定义自己的translator,来实现自己的具体要求。
简单举个例子。
首先建立一个translator类,继承 org.apache.tapestry.form.translator.AbstractTranslator
package org.appfuse.tapestry.translators;
import java.util.Locale;
import org.apache.tapestry.form.IFormComponent;
import org.apache.tapestry.form.ValidationMessages;
import org.apache.tapestry.form.translator.AbstractTranslator;
import org.apache.tapestry.valid.ValidatorException;
public class FullToHalfTranslator extends AbstractTranslator{
//这个方法在页面文件render的时候执行。你可以在这里调用自己的方法,来实现需要的转换。在这里JapanEncodeUtil.toHalf方法是我自己定义的一个实现全角文字转化成半角文字的方法,具体代码没必要贴出来了。
protected String formatObject(IFormComponent arg0, Locale arg1, Object arg2) {
String str = JapanEncodeUtil.toHalf(arg2.toString());
return str;
}
//这个方法在页面文件submit的时候调用。
protected Object parseText(IFormComponent field, ValidationMessages message, String text) throws ValidatorException {
return JapanEncodeUtil.toHalf(text);
}
}
ok,就这么简单。接下来,在hivemodule.xml文件中添加下面定义
<contributionconfiguration-id="tapestry.form.translator.Translators">
<beanname="fullToHalf" class="org.appfuse.tapestry.translators.FullToHalfTranslator" />
</contribution>
ok,下面就可以在page文件中使用了
代码片断:
<componentid="remoteFileDir" type="TextField">
<bindingname="value" value="backupJobSetting.remoteFileDir"/>
<bindingname="translator" value="translator:fullToHalf"/>
<bindingname="validators" value="validators:required"/>
<bindingname="displayName" value="message:backupJobSetting.remoteFileDir"/>
</component>
也可以在html文件中使用,具体不介绍了,和其他用法一样。
ok,大功告成!由于我也是刚刚接触tapestry几天,介绍的不详细。有不完整的请大家指教。