use*_*225 2 validation jsf primefaces jsf-2
我创建了一个实现自定义验证器的新自定义组件.以下是我称之为:
<p:inputText value="#{MyBean.value}" >
<f:attribute name="label" value="#{ResourceBean.labels['label']}"/>
<my:validator error="#{ResourceBean.message['the.error.message']}"
expression="#{ResourceBean.regExp['alphanumeric']}"/>
</p:inputText>
Run Code Online (Sandbox Code Playgroud)
这是验证实现
String val = value == null ? "" : value.toString();
if (!val.matches(getExpression())) {
throw new ValidatorException(new
FacesMessage(FacesMessage.SEVERITY_ERROR,getErrorSummary(),null));
Run Code Online (Sandbox Code Playgroud)
和属性文件中的错误消息:
the.error.message={0}\: is Invalid.
Run Code Online (Sandbox Code Playgroud)
问题是,{0}
错误消息中的标签没有替换,因此我收到错误消息:
{0}: is Invalid.
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决它?
您需要使用MessageFormat
API,就像JSF在幕后一样.
String message = getErrorSummary();
String label = component.getAttributes().get("label");
String formattedMessage = MessageFormat.format(message, label);
throw new ValidatorException(new FacesException(formattedMessage));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1661 次 |
最近记录: |