2016-04-22 7 views
0

を発生させたエキスフィールド名私は休止状態-バリデータをJAX-RSサービスと@NotNullを使用してクエリパラメータを検証するために使用しています:ConstraintViolationException - 例外

@GET 
public Response doSomething(@NotNull @QueryParam("myParam") String myParam) {...} 

これは期待通りに動作し、myParamnullある場合ConstraintViolationExceptionをスローします。違反に関連付けられたパラメータ名(例:myParam)を抽出して、クライアントへの応答メッセージに戻しますが、例外からこれを抽出する明白な方法はないようです。誰かがいくつかの洞察力を提供できるか

答えて

1

BeanValidation 1.1以降では、パラメータ名の抽出を構成可能にするParameterNameProviderコントラクトがあります。他の答えで述べたように、Java 8では、-parametersフラグを指定してコンパイルすると、パラメータ名をバイトコードで取得できます。この場合はReflectionParameterNameProviderを使用してください。しかし、Java 7の場合でも、例えばParanamerParameterNameProviderを使ってパラメータ名を取得できます。このパラメータ名プロバイダはParanamerに基づいており、それを設定する方法はいくつかあります。