0

我在 wicket 1.5 应用程序中使用 EmailTextField 来记录用户。根据 GMail 别名,电子邮件中可能存在 + 符号,但检票口不允许这样做。有没有办法在验证器中接受额外的符号?

4

2 回答 2

1

您必须编写自己的验证器:

public class GMailAddressValidator extends PatternValidator {

    public GMailAddressValidator() {
        super("^[_A-Za-z0-9-+]+(\\.[_A-Za-z0-9-+]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*((\\.[A-Za-z]{2,}){1}$)",
                Pattern.CASE_INSENSITIVE);
    }
}

在这里,我只是在原始 Wicket 正则表达式中添加两个加号以验证电子邮件(尝试以粗体突出显示加号):

^[_A-Za-z0-9- + ]+(\\.[_A-Za-z0-9- + ]+)*@[A-Za-z0-9-]+(\\.[A- Za-z0-9-]+)*((\\.[A-Za-z]{2,}){1}$)

之后,您可以将简单的 TextField 与验证器一起使用,而不是使用 EmailTextField。像那样:

new TextField<String>("email").add(new GMailAddressValidator())
于 2012-10-03T09:47:34.197 回答
0

我认为您将不得不像这样覆盖 HTML5 验证:覆盖 html5 验证,该组件仅将输入类型设置为电子邮件,我认为它不会添加任何检票口验证。如果您不想添加 js 覆盖,最好的办法是为检票口 TextField 创建自己的验证器。

于 2012-10-03T09:07:35.893 回答