给定一个Spring-MVC控制器方法:
@RequestMapping(value = "/method")
public void method(@RequestParam int param1,
@RequestParam int param2) { /*...*/ }
如果请求URL中缺少参数,则会报告错误,例如:
JBWEB000068:message所需的int参数'param 1'不存在
我需要将参数移动到一个模型类中,但保持完全相同的GET请求URL。因此,将method
的参数修改为MyModel model
,其中包含param1
和param2
。
如果@RequestParam
被省略了,这就可以工作,但问题是如果参数丢失,则不会报告错误。另一方面,如果包含@RequestParam
,则在GET请求中需要一个名为“model”的参数。有没有一种方法可以使model参数成为强制参数,同时保持相同的请求URL?
3条答案
按热度按时间zujrkrfu1#
使用JSR-303注解来验证对象(在这种情况下,不要使用原语,而是使用Object表示)。
控制器方法
如果在类路径上没有JSR-303提供程序(例如hibernate-validator),则创建一个
Validator
并使用它来验证对象。链接。
1.Spring验证reference guide
wvmv3b1j2#
你可以尝试@ModelAttribute和method=RequestMethod.POST:在您的控制器中:
在JSP中:
如果您仅限于GET请求,则可能无法使用单独的ModelClass。在这种情况下,您需要求助于请求参数。
os8fio9y3#
add(,@BindingResult result)在你的参数中将错误绑定到所有的参数中。你可以使用result.hasErrors()来检查错误是否存在