Wicket 1.5 - EmailTextField: принять символ плюса

Я использую EmailTextField в приложении Wicket 1.5 для регистрации пользователей. Согласно псевдониму GMail, в электронном письме может присутствовать символ +, но калитка этого не допускает. Есть ли способ принять дополнительный символ в валидаторе?


person Nico    schedule 03.10.2012    source источник


Ответы (2)


Вам нужно написать собственный валидатор:

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())
person Artem Shafranov    schedule 03.10.2012

Я думаю, вам придется переопределить проверку HTML5 следующим образом: Переопределить проверку html5, компонент только устанавливает тип ввода для электронной почты, я не думаю, что он добавляет какую-либо проверку калитки. Если вы не хотите добавлять переопределение js, лучше всего будет создать собственный валидатор для TextField калитки.

person drobson    schedule 03.10.2012