使用GXT验证textField

时间:2012-07-31 10:15:22

标签: regex gwt gxt

我必须使用以下正则表达式检查一些textField:

[\sa-zA-Z.'-àáâãäåçèéêëìíîïðòóôõöùúûüýÿ]+

它适用于正则表达式检查程序,但它不适用于我的GWT / GXT应用程序。我在扩展AbstractValidator的类中使用上面的函数。

public static native boolean isValidName(String name) /*-{
    var pattern =  /[\sa-zA-Z.\'-àáâãäåçèéêëìíîïðòóôõöùúûüýÿ]+/;
    return pattern.test(name);
}-*/;

我使用GXT2和GWT 1.6.4。

4 个答案:

答案 0 :(得分:4)

您是否尝试使用String.macthes来验证gxt Validator中的值和TextField类?

    someTextField.setValidator(new Validator() {
        @Override
        public String validate(Field<?> field, String value) {
            return value.matches("[\\sa-zA-Z.'-àáâãäåçèéêëìíîïðòóôõöùúûüýÿ]+") 
                                 ? null : "not a valid value";
        }
    });

答案 1 :(得分:0)

确定gxt2 ...

相应的方法是setRegex(String regex),如果所有其他验证器都已通过

,它将被调用

http://www.jarvana.com/jarvana/view/com/extjs/gxt/2.2.0/gxt-2.2.0-javadoc.jar!/com/extjs/gxt/ui/client/widget/form/TextField.html

为什么不使用(用于gxt3):

 com.sencha.gxt.widget.core.client.form.Field<T>.addValidator(Validator<T> validator) 

 field.addValidator(new RegExValidator( "[\sa-zA-Z.\'-àáâãäåçèéêëìíîïðòóôõöùúûüýÿ]", "some message"));

请参阅gxt field api

请参阅gxt RegExValidator

答案 2 :(得分:0)

为什么要原生,你还可以使用Java?或者甚至更好,试着看看GXT是否为您提供了一些验证工具。与Validators

一样

相关: Regular Expressions and GWT

答案 3 :(得分:0)

Sencha GXT4:

枚举VType

 public enum VType {
    ALPHABET("^[a-zA-Z_]+$", "Alphabet"), ALPHANUMERIC("^[a-zA-Z0-9_]+$",
            "Alphanumeric"), NUMERIC("^[+0-9]+$", "Numeric"), EMAIL("^(\\w+)([-+.][\\w]+)*@(\\w[-\\w]*\\.){1,5}([A-Za-z]){2,4}$","Email");
    String regex;
    String name;

    VType(String regex, String name) {
        this.regex = regex;
        this.name = name;
    }

}

验证员类

import java.util.ArrayList;
import java.util.List;

import com.google.gwt.editor.client.Editor;
import com.google.gwt.editor.client.EditorError;
import com.sencha.gxt.widget.core.client.form.Validator;
import com.sencha.gxt.widget.core.client.form.error.DefaultEditorError;

public class VTypeValidator implements Validator<String> {

    private String message;  
    private final VType type;

    public VTypeValidator(VType type,String message){
      this.type = type;
      this.message=message;
    }



  @Override
  public List<EditorError> validate(Editor<String> editor, String value) {
      List<EditorError> res = null;
      if (!value.matches(type.regex)) {
          List<EditorError> errors = new ArrayList<EditorError>();
          errors.add(new DefaultEditorError(editor, message,""));
          return errors;
        }
      return res;
  }
}

如何使用textField

   field.addValidator(new VTypeValidator(VType.EMAIL,"Invalid email"));