论坛首页 入门技术论坛

Tapestry 建立自己的Translator

浏览 1836 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-02-09  

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文件中使用,具体不介绍了,和其他用法一样。
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics