锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
1. 寤虹珛Validator緇ф壙BaseValidator綾?br />鎴戝疄鐜板緱鏄獙璇佺敤鎴瘋緭鍏ュ繀欏誨拰鎸囧畾瀛楁涓鑷淬?br />濡傛灉鎯寵甯﹀弬鏁板緱楠岃瘉錛岃娣誨姞涓涓甫String鍙傛暟寰楁瀯閫犳柟娉曪紝騫跺疄鐜皊etter錛実etter鏂規(guī)硶
渚嬪validator楠岃瘉璋冪敤鍚嶄負(fù) name錛屽垯瀹炵幇setName,getName鏂規(guī)硶銆?br />浠g爜錛?
package org.appfuse.webapp.tapestry;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.TapestryUtils;
import org.apache.tapestry.form.FormComponentContributorContext;
import org.apache.tapestry.form.IFormComponent;
import org.apache.tapestry.form.ValidationMessages;
import org.apache.tapestry.form.validator.BaseValidator;
import org.apache.tapestry.valid.ValidatorException;
public class MyValidater extends BaseValidator {
//鐢ㄦ埛寰楄緭鍏ュ唴瀹?br />聽(tīng)private String name;
聽(tīng)/**
聽(tīng) * @return the name
聽(tīng) */
聽(tīng)public String getName() {
聽(tīng)聽(tīng)return name;
聽(tīng)}
聽(tīng)/**
聽(tīng) * @param name
聽(tīng) *聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) the name to set
聽(tīng) */
聽(tīng)public void setName(String name) {
聽(tīng)聽(tīng)this.name = name;
聽(tīng)}
聽(tīng)public MyValidater() {
聽(tīng)}
聽(tīng)public MyValidater(String string) {
聽(tīng)聽(tīng)super(string);
聽(tīng)}
//瀹炵幇楠岃瘉鏂規(guī)硶
聽(tīng)public void validate(IFormComponent field, ValidationMessages messages,
聽(tīng)聽(tīng)聽(tīng)Object object) throws ValidatorException {
聽(tīng)聽(tīng)String str = object.toString();
聽(tīng)聽(tīng)if (!str.equals(name))
聽(tīng)聽(tīng)聽(tīng)throw new ValidatorException(messages.formatValidationMessage(
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)getMessage(), "invalid-format", new Object[] {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)field.getDisplayName(), null }));
聽(tīng)}
}
2.ok錛屼慨鏀筯ivemodule.xml 鏂囦歡錛屾坊鍔犱互涓嬩唬鐮?br />
聽(tīng)聽(tīng)聽(tīng) <contribution configuration-id="tapestry.form.validator.Validators">
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) <validator name="name" configurable="true" class="org.appfuse.webapp.tapestry.MyValidater"/>
聽(tīng)聽(tīng) </contribution>
娉ㄦ剰錛氬鏋滀綘鐨剉alidator涓嶅甫鍙傛暟錛岃璁劇疆configurable=false
聽(tīng)聽(tīng)聽(tīng) <component id="usernameField" type="TextField">
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) <binding name="value" value="user.username"/>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) <binding name="validators" value="validators:required,name=airdream"/>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) <binding name="displayName" value="message:user.username"/>
聽(tīng)聽(tīng)聽(tīng) </component>
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{
//榪欎釜鏂規(guī)硶鍦ㄩ〉闈㈡枃浠秗ender鐨勬椂鍊欐墽琛屻備綘鍙互鍦ㄨ繖閲岃皟鐢ㄨ嚜宸辯殑鏂規(guī)硶錛屾潵瀹炵幇闇瑕佺殑杞崲銆傚湪榪欓噷JapanEncodeUtil.toHalf鏂規(guī)硶鏄垜鑷繁瀹氫箟鐨勪竴涓疄鐜板叏瑙掓枃瀛楄漿鍖栨垚鍗婅鏂囧瓧鐨勬柟娉曪紝鍏蜂綋浠g爜娌″繀瑕佽創(chuàng)鍑烘潵浜?jiǎn)銆?br />
聽(tīng)protected String formatObject(IFormComponent arg0, Locale arg1, Object arg2) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)String str = JapanEncodeUtil.toHalf(arg2.toString());
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)return str;
聽(tīng)}
//榪欎釜鏂規(guī)硶鍦ㄩ〉闈㈡枃浠秙ubmit鐨勬椂鍊欒皟鐢ㄣ?
聽(tīng)protected Object parseText(IFormComponent field, ValidationMessages message, String text) throws ValidatorException {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)return JapanEncodeUtil.toHalf(text);
聽(tīng)}
}
聽(tīng)<contributionconfiguration-id="tapestry.form.translator.Translators">
聽(tīng)<beanname="fullToHalf" class="org.appfuse.tapestry.translators.FullToHalfTranslator" />
聽(tīng)</contribution>