2010-01-16 34 views
14

Tôi đã chỉ định <mvc:annotation-driven /> trong bộ điều phối-servlet. Tôi không sử dụng @InitBinder.
Và tôi đang sử dụng chú thích @valid để xác nhận trong phương pháp điều khiển của nhưKhông hiển thị thông báo lỗi khi được xác thực bằng @valid (JSR-303) trong Spring MVC

@RequestMapping(method = RequestMethod.POST, value = "new") 
    public String save(@Valid Article article,ModelMap model) { 
//code here 
} 

Và xác nhận hoạt động tốt, nhưng thay vì hiển thị lỗi trong .. mẫu thể hiện trong mã html

<tr> 
     <td>Title</td> 
     <td><form:input path="title"/></td> 
     <td><form:errors path="title"/></td> 
</tr> 

Nó ném ngoại lệ như ..

org.springframework.web.util.NestedServletException: Yêu cầu xử lý thất bại; lồng nhau ngoại lệ là org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 lỗi lỗi Field ở đối tượng 'bài' trên sân 'urlInfo.url': giá trị từ chối []; mã số [typeMismatch.article.urlInfo.url, typeMismatch.urlInfo.url, typeMismatch.url, typeMismatch.java.net.URL, typeMismatch]; đối số [org.springframework.context.support.DefaultMessageSourceResolvable: mã [article.urlInfo.url, urlInfo.url]; đối số []; thông báo mặc định [urlInfo.url]]; thông báo mặc định [Không thể chuyển đổi giá trị thuộc tính của nhập 'java.lang.String' thành yêu cầu nhập 'java.net.URL' cho thuộc tính 'urlInfo.url'; ngoại lệ lồng nhau là org.springframework.core.convert.ConversionFailedException: Không thể chuyển đổi giá trị từ loại 'java.lang.String' thành loại 'java.net.URL'; ngoại lệ lồng nhau là org.springframework.core.convert.ConversionFailedException: Không thể chuyển đổi giá trị từ loại 'java.lang.String' thành loại 'java.net.URL'; ngoại lệ lồng nhau là java.lang.reflect.InvocationTargetException] Lỗi trường trong đối tượng 'bài viết' trên trường 'tiêu đề': giá trị bị từ chối []; mã số [Size.article.title, Size.title, Size.java.lang.String, Size]; đối số [org.springframework.context.support.DefaultMessageSourceResolvable: mã [article.title, title]; đối số []; thông báo mặc định [tiêu đề], {javax.validation.constraints.Size.message}, 6, [Ljava.lang.Class; @ 1db3aac, 2147483647, [Ljava.lang.Class; @ 1e90abf]; nhắn mặc định [size phải từ 6 và 2147483647]

org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:659) 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) 
org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213) 
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171) 
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) 
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) 
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381) 
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) 

Làm thế nào để cấu hình nó, để không ném một ngoại lệ và thay vào đó trở về trang và hiển thị thông báo lỗi ...

+0

Bạn đã bật xác thực bằng cách nào?Sử dụng '@ InitBinder' trên bộ điều khiển của bạn, hoặc' 'trong ngữ cảnh của bạn? Cho dù bạn đang sử dụng cái nào, hãy thêm những bit đó vào câu hỏi của bạn. – skaffman

Trả lời

16

Bạn nên quyết định rõ ràng phải làm gì với lỗi xác thực:

@RequestMapping(method = RequestMethod.POST, value = "new") 
public String save(@Valid Article article, BindingResult result, ModelMap model) { 
    if (result.hasErrors()) 
     return "formView"; 
17

Trong phương pháp xử lý bộ điều khiển của bạn, hãy đảm bảo đối số BindingResult ngay sau dấu phẩy và tranh luận.

+1

Đây là câu trả lời đúng cho tôi. –

+0

Rất lạ nhưng điều này cũng phù hợp với tôi. Tôi đã luôn luôn được cho biết rằng mùa xuân có thể tìm ra các thông số phương pháp điều khiển trên riêng của mình và tôi sẽ không bao giờ cần phải lo lắng về họ! Nhưng đây là ít nhất một trường hợp thứ tự của các tham số ảnh hưởng đến việc thực hiện! – Jaywalker

Các vấn đề liên quan