我試圖在WAS 8.5.5.12完整配置文件中使用Spring MVC控制器進行JSR 303 bean驗證。JSR 303在WebSphere上驗證Spring(MVC)
我確認只是一個單一的@RequestParam,不是一個完整的bean:
@RequestMapping(method=RequestMethod.GET)
public String initializeCheckIn(
@Valid @Pattern(regexp = "^[\\p{Alnum}]*$")
@RequestParam("officeid") String officeId, HttpSession session, Model model) {
我加了一些Spring-specific configuration之前,沒有驗證正在發生,但是沒有任何錯誤。據推測,驗證並沒有被嘗試。
現在,我已經添加了必要的@Validated類註解和bean定義:
<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"/>
我得到以下錯誤:
[8/9/17 10:33:40:588 CDT] 000000a7 ServletWrappe E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0014E: Uncaught service() exception root cause Spring MVC Dispatcher: org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org.hibernate.validator.method.MethodConstraintViolationException
...
Caused by: java.lang.NoClassDefFoundError: org.hibernate.validator.method.MethodConstraintViolationException
at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:152)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)
at my.package.web.CheckInController$$EnhancerBySpringCGLIB$$d385737c.initializeCheckIn(<generated>)
基於
Spring應該自動檢測一個可用的JSR-303提供者,其中this version of WebSphere (8.5.5.12 full profile) should have。它似乎無法找到JSR-303提供者,所以它回落到默認值。
那麼,爲什麼沒有找到WebSphere版本或者如何找到它?
但我不想使用Hibernate驗證器,我想使用WebSphere提供的驗證器。 – dbreaux