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幾天,介紹的不詳細。有不完整的請大家指教。