使用@RequestParam时从bean获取“null”值

时间:2016-10-14 10:01:52

标签: java spring spring-mvc

这是我的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个值。

我该如何解决?

3 个答案:

答案 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")