На основании вашей истории вопросов вам, кажется, это нужно для JSF <h:inputText>
компонента .Я настоятельно рекомендую искать другой и более надежный подход.
В JSF проверка абсолютно не должна выполняться внутри метода действия управляемого компонента, а внутри полноценной реализации Validator
.В нем вы можете просто проверить каждый почтовый адрес индивидуально.
@FacesValidator("mailAddressesValidator")
public class MailAddressesValidator implements Validator {
private static final Pattern PATTERN = Pattern.compile("([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+)");
@Override
public void validate(FacesContext context, UIComponent component, Object value) {
if (value == null) {
return;
}
String[] mailAddresses = (String[]) value;
List<FacesMessage> messages = new ArrayList<FacesMessage>();
for (String mailAddress : mailAddresses) {
if (!PATTERN.matcher(mailAddress).matches()) {
messages.add(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Invalid mail address format: " + mailAddress, null));
}
}
if (!messages.isEmpty()) {
throw new ValidatorException(messages);
}
}
}
Используйте его следующим образом:
<h:inputText value="#{bean.mailAddresses}" validator="mailAddressesValidator" />
Обратите внимание, что шаблон более мягок по отношению к "недопустимым символам", потому что нелатинские символы, такие как кириллица, иврит, санскрит,Китайский и т. Д. В адресе электронной почты действителен !Вы можете, если хотите, всегда менять его на другой шаблон, который должен соответствовать индивидуальному почтовому адресу согласно бизнес-требованиям.