这是我的Controller方法:
@RequestMapping(value = "/quickstart/email")
public String viewQuickStartEmailForm(@RequestParam("key") String key,@ModelAttribute(value = "quickbean")
QuickStartBean quickbean,BindingResult result,Model model) {
try {
System.out.println(key);
email=quickbean.getEmail();
System.out.println(email);
model.addAttribute("quickstartdatabean", new QuickStartBean());
} catch (Exception e) {
e.printStackTrace();
}
当我不使用@RequestParam
时,代码工作正常,quickbean
获取表单值,但是当我使用它时,bean会获得null
个值。
我该如何解决?
答案 0 :(得分:1)
如果你传递密钥或不传递密钥,它将通过添加required
属性来工作,尝试使用此@RequestParam(required = false ,value = "key")String key
答案 1 :(得分:1)
QuickStartBean
中的每个字段都会被解释为@RequestParam
。
因此,如果您在控制器方法中明确使用@RequestParam
,则spring将使用它并忽略QuickStartBean
。 bean和RequestParam
都不可能。
将String key
放入QuickStartBean
。或者像这样创建一个新的bean:
public class RequestForm extends QuickStartBean {
private String key;
[...] // getter,setter...
}
和控制器:
public String viewQuickStartEmailForm(@Valid RequestForm form, BindingResult result, Model model){
if(result.hasErrors()) {
// return "error";
}
[...]
}
答案 2 :(得分:-2)
尝试@RequestParam(value = "key")
。