1

JSR 303 を使用して重大度レベルを設定し、JSF 2.0 アプリケーションでその重大度レベルを表示する方法を知りたいです。今のところ、メッセージを受け取ったのは 2 回だけです。

バッキング 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 アノテーション内の何かにマップするにはどうすればよいでしょうか?

手伝ってくれませんか?

よろしくお願いします

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 annlotations を次のように定義できます。

@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 に答える