spring-data-rest の検証を機能させようとしています。ドキュメントから、バリデーターを利用可能にするだけで済み、それを機能させることができましたが、検証制約が正常にキャッチ/処理されると、スタック トレースを含む 500 エラー ページが表示されます。
config クラス、RepositoryRestMvcConfiguration には、検証エラーが 500 ではなく 400 として返されるように見える validationExceptionHandler があります。これは、遅延ロードされた Bean でもあります。
設定が間違っていませんか? または、spring-data-rest が 500 ではなく 400 を返すようにする別の方法はありますか?
spring-data-rest バージョン 2.0.0 リリースを使用しています
tomcat が返すスタック トレース:
HTTP Status 500 - Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [test.domain.Account] during persist time for groups [javax.validation.groups.Default, ]
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [test.domain.Account] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
ConstraintViolationImpl{interpolatedMessage='size must be between 0 and 10', propertyPath=login, rootBeanClass=class test.domain.Account, messageTemplate='{javax.validation.constraints.Size.message}'}
]
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:965)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
アカウント エンティティ:
@Entity
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@Column(unique = true)
@Size(max = 10)
String login;
}
RestMvcConfig:
@Configuration
public class RestExporterRestConfig extends RepositoryRestMvcConfiguration {}