1

我想知道如何使用 JSR 303 设置严重性级别并在 JSF 2.0 应用程序中显示该严重性级别。目前,我只收到了两次消息。

支持豆:

@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 注释中的内容?

你能帮我么?

此致

4

2 回答 2

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 注释,比如

@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 专家,因此我不得不跳过这部分问题。

于 2012-11-08T09:20:05.030 回答
0

可悲的事实是 JSR303 / JSR349(Bean Validation API)消息在 JSF 2.0-2.2 中始终是错误消息。严重性是一个常数——参见javax.faces.validator.MessageFactory的第 214 行。

于 2015-12-27T16:55:06.307 回答