用于Rest PUT的@ModelAttribute - 请求param null

时间:2013-10-30 19:04:03

标签: rest spring-mvc put

我需要根据请求参数'type'填充我的pojo类。 所以我有像

这样的代码
@ModelAttribute
public void getModelObject(HttpServletRequest request, ModelMap modelMap) {
    String typeCombo = request.getParameter("type");
    System.out.println("typeCombo: " + typeCombo);
    if (typeCombo != null) {
        if (condition) {
            modelMap.addAttribute("modelObj", new ClassB()); //ClassB extends ClassA
        } else if (another condition) {
            modelMap.addAttribute("modelObj", new ClassC()); //ClassC extends ClassA
        } else {
            System.out.println("no type found");
        }
    } else {
        System.out.println("typecombo null");
    }

}

我使用上面的方法来创建将用于添加/更新的正确子类。上面的一个在“POST”的情况下工作正常 - 用于创建记录。但对于“PUT”,request.getParameter(“type”)始终返回null。所以对于编辑,我无法获得正确的子类。

以下是我的帖子和放置请求映射:

@RequestMapping(value = "", method = RequestMethod.POST, headers = "Accept=*/*")
@ResponseBody
public String addCredentials(@ModelAttribute("modelObj") Credential credential,
                             ModelMap modelMap) {
//code
}


@RequestMapping(value = "/edit/{id}", method = RequestMethod.PUT, headers = "Accept=*/*")
@ResponseBody
public Credential editCredential(@ModelAttribute ("modelObj") Credential credential, @PathVariable long id, ModelMap model) {

//代码 }

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

像这样注册过滤器HttpPutFormContentFilter

<beans:bean id="httpPutFormContentFilter"
class="org.springframework.web.filter.HttpPutFormContentFilter" />