2016-05-17 3 views
0

В моем поле ввода электронной почты есть два валидатора, первый использует f: validateRegex, второй использует f: validator. Сообщение по умолчанию, отображаемое, когда validateRegex был сбой («значение недействительно»), сообщение валидатора, отображаемое при отказе валидатора («письмо уже используется»). Это нормально, пока я не настроил f: validateRegex сообщение с validatorMessage. В поле ввода теперь отображается новое сообщение («сообщение недействительно») для неожиданного.validatorMessage переопределить другое сообщение

Так как я могу сохранить сообщение f: validator?

HTML:

<p:inputText id="phoneNo" value="#{bean.phoneNo}" 
validatorMessage="#{msg['errors.phone.invalid']}"> 
    <f:validateRegex pattern="#{msg['pattern.regex.phone']}" /> 
    <f:validator binding="#{phoneNoValidator}" /> 
</p:inputText> 
<p:message for="phoneNo" showDetail="true" /> 

Validator класс:

public void validate(FacesContext context, UIComponent component, 
    Object value) throws ValidatorException { 
    fc = context; 
    String phoneNo = String.valueOf(value); 
    if (driverBO.isExistMobileNo(phoneNo)) { 
     FacesMessage message = getErrorMessage(Errors.PHONE_DUPLICATED); 
     throw new ValidatorException(message); 
    } 
} 

ответ

-1

Как вы уже заметили, "validatorMessage переопределить другое сообщение".

f: validateRegex также не очень удобен для настройки сообщений.

  1. атрибут удалить: validatorMessage
  2. удалить тег: F: validateRegex
  3. Перейти к Bean Validation, который легко настроить и для i18n, добавив followin аннотацию в бобе:

пример кода:

@Pattern(regexp = "[A-Za-z\\. ]+", message = "{pattern.regex.phoneMessage}") 
private String phoneNo; 

Сообщение должно быть определено в: ValidationMessages.properties для d efault locale и в ValidationMessages_xx.properties для локали «xx».

См. Отличный article о.

Смежные вопросы