Sei*_*dis 7 java jsf messages growlnotify primefaces
当电子邮件地址无效时,显示的消息是"无效的电子邮件.无效的电子邮件.".我知道该消息有两部分:摘要和细节.我需要这两个,但我希望每个都有不同的信息.如何更改邮件以显示"无效的电子邮件:请输入有效的电子邮件地址"?
<p:messages showDetail="true" autoUpdate="true" closable="true" />
<h:panelGrid columns="2">
<h:outputText value="#{label.email}: *" />
<p:inputText required="true" value="#{userWizard.emailAddress}"
validatorMessage="#{label.invalidEmail}" label="#{label.email}">
<f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$">
</f:validateRegex>
</p:inputText>
</h:panelGrid>
Run Code Online (Sandbox Code Playgroud)
这是不可能的validatorMessage(既不是converterMessage也不是requiredMessage).该值将被用作既总结和细节.
您需要自定义一个自定义验证器,您可以自己构建FacesMessage两个部件.假设你旁边也是一个代表消息细节的a,那么它看起来应该是这样的:label.emaillabel.email_detail
@FacesValidator("emailValidator")
public class EmailValidator implements Validator {
private static final Pattern PATTERN = Pattern.compile("([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+)");
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
if (value == null || ((String) value).isEmpty()) {
return; // Let required="true" handle.
}
if (!PATTERN.matcher((String) value).matches()) {
String summary = context.getApplication().evaluateExpressionGet(context, "#{label.email}", String.class);
String detail = context.getApplication().evaluateExpressionGet(context, "#{label.email_detail}", String.class);
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, detail));
}
}
}
Run Code Online (Sandbox Code Playgroud)
(请注意,我改编了电子邮件正则表达式以更好地准备世界统治;中文,希伯来语,西里尔语等非拉丁字符即允许在域名中使用,因此自2010年新的IANA决定以来也是电子邮件地址)
然后用作
<p:inputText ... validator="emailValidator" />
Run Code Online (Sandbox Code Playgroud)
根据这里的文档:http://www.primefaces.org/docs/vdl/3.4/primefaces-p/messages.html
你可以这样做:
<p:messages showSummary="true" showDetails="true" />
Run Code Online (Sandbox Code Playgroud)
你也可以将它们分开......用于造型:
<p:messages showSummary="false" showDetails="true" />
<p:messages showSummary="true" showDetails="false" />
Run Code Online (Sandbox Code Playgroud)
但是您无法使用validatorMessage定义两个错误消息:
http://www.primefaces.org/docs/vdl/3.4/primefaces-p/inputText.html
| 归档时间: |
|
| 查看次数: |
12238 次 |
| 最近记录: |