【问题标题】:Getting "null" value from bean when using @RequestParam使用 @RequestParam 时从 bean 获取“null”值
【发布时间】:2016-10-14 10:01:52
【问题描述】:

这是我的控制器方法:

    @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 值。

我该如何解决?

【问题讨论】:

标签: java spring spring-mvc


【解决方案1】:

如果您传递密钥或不传递密钥,它将通过添加 required 属性来工作,尝试使用此 @RequestParam(required = false ,value = "key")String key 进行更改

【讨论】:

    【解决方案2】:

    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";
        }
        [...]
    }
    

    【讨论】:

      【解决方案3】:

      试试@RequestParam(value = "key")

      【讨论】:

      • 这和@RequestParam("key") 一样,值是别名 vor name
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-24
      • 1970-01-01
      • 2012-05-23
      • 2013-04-02
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多