我正在使用Spring Data Rest,並且一切進展順利。春季數據休息驗證+異常映射:令人困惑
我想對我的實體應用驗證(JSR 303)。
春天的文檔說我可以通過幾種方式攔截應用程序事件(我無法使用它們,現在spring.io似乎已經停止運行)。
但是,我沒有得到它通過把
@Validated
在我的程序存儲庫工作:
@Validated
@RepositoryRestResource(collectionResourceRel = "workers", path = "workers")
public interface WorkerRepository extends PagingAndSortingRepository<Worker, Long> {
}
它會拋出異常。問題是,它是一個春天例外,甚至沒有根之一,我需要基本上都坐驗證,把它們變成一個自定義實體的有效載荷:
{
"foo": "must be of length 10",
"baz": "Must match pattern '[A-Z]+'"
}
因此,概括地說,我想
- 驗證使用JSR 303
- 生產出400的HTTP實體的實體:和映射或現場 - >錯誤
什麼是最直接的方式做到這一點? 我還無意中發現了這一點:
Detected @ExceptionHandler methods in repositoryRestExceptionHandler
這似乎可疑有用。當我結帳時,它看起來像我需要的類肯定
這看起來好像可以工作,而這正是我需要的。但是我需要攔截那些驗證失敗發生的事情。 –
@ChristianBongiorno - 謝謝你的提示 - 我在帖子中增加了一些細節 - 配置完全是你需要的 - 其餘部分已經在spring-data-rest中得到了滿足 –
@MathiasDpunkt很好的回答,但事實上,你會爲spring-data-rest自定義控制器實現類似的行爲嗎? – m4rtin