我想知道如何使用JSR 303设置严重性级别,并在JSF 2.0应用程序中显示严重性级别。现在,我只收到了两次消息。
支持bean:
@NotNull()
@Min(value = 0)
@Max(value = 1000000)
private int kilometres;
但是,在输入短信中
<p:messages id="kilometresMessages" showDetail="true" closable="true" />
消息是:
Minimum value: 0Minimum value: 0
我想要:FacesMessage.SEVERITY_INFO:最小值:0
那么如何将FacesMessage.SEVERITY_XXXX映射到我的JSR303注释中?
你能帮帮我吗?
祝你好运
答案 0 :(得分:2)
在JSR303中,注释存在可以使用的有效负载属性。
public final class Severity {
public static class Error implements Payload {
}
public static class Warning implements Payload {
}
public static class Info implements Payload {
}
private Severity() {
}
}
然后你可以定义你的JSR303 annotations,如
@NotNull()
@Min.List({
@Min(value = 0, payload={Severity.Info.class}),
@Min(value = -20, payload={Severity.Error.class})
})
@Max(value = 1000000)
private int kilometres;
验证后,相应的ConstraintViolation对象包含有效负载。
Set<Class<? extends Payload>> payload = ConstraintViolation.getConstraintDescriptor().getPayload();
之后,您必须将constraintViolations转换为您想要显示的相应消息。由于我不是JSF专家,我不得不跳过这部分问题。
答案 1 :(得分:0)
令人遗憾的是,JSR 2.03 / JSR349(Bean Validation API)消息始终是JSF 2.0-2.2中的错误消息。严重性是一个常数 - 见javax.faces.validator.MessageFactory的第214行。