問題の背景
Resteasy の を介して Spring を使用する Resteasy サービスがありますSpringContextLoaderListener
。これは Resteasy バージョン に基づいてい3.0-beta-6
ます。
着信リクエストで Bean バリデーションを使用したいのですが、Resteasy にバリデーターを呼び出させることができません。検証が構成されていないように動作し、単にメソッドに無効な入力オブジェクトを渡します。
質問
- Resteasy で Bean 検証を有効にするにはどうすればよいですか?
私が試したこと
私は次のことをしました:
- 私のリソースクラスに注釈を付けました
@ValidateRequest
- メソッドパラメーターに注釈を付けました
@Valid
- 入力クラスの制約に注釈を付けました。
- への依存関係を追加しました
resteasy-hibernatevalidator-provider
リソース:
@Named
@Path("users")
@ValidateRequest
public class UserResource
{
/**
*
* @param user
*
* curl -x POST http://localhost:7016/api/1.0/users
*
*/
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public Response createUser(@Valid User user)
{
//User creation logic here.
}
}
ユーザー POJO:
@JsonPropertyOrder({
"user_id",
"user_name",
"email"
})
public class User
{
@JsonProperty("user_id")
private Long userId;
@JsonProperty("user_name")
@NotNull(message = "Username must be provided")
private String username;
@Email(message = "Invalid email address.")
private String email;
//Getters and Setters Removed for Brevity
}
検証用のPOMエントリ:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-hibernatevalidator-provider</artifactId>
<version>${resteasy.version}</version>
</dependency>
依存関係は、とそれに関連付けられたresteasy-hibernatevalidator-provider
をもたらします。HibernateValidatorContextResolver
HibernateValidatorAdapter
更新 (2013 年 6 月 18 日):
pom の Resteasy バージョンを元に戻し、2.3.5.Final
コードを変更せずに Bean 検証が機能し始めました。