2

@RequestAttribute在 Spring MVC 项目中不获取值。

我使用@ModelAttribute。这里foo的属性被设置为bar

@ModelAttribute  
void beforeInvokingHandlerMethod(HttpServletRequest request) 
{  
    request.setAttribute("foo", "bar");  
}

我尝试调用请求属性值以foo使用@RequestAttribute("foo"). 但值为空。

然后我尝试使用request.getAttribute("foo")并打印该值。我不知道以下代码有什么问题:

@RequestAttribute("foo"). 
@RequestMapping(value="/data/custom", method=RequestMethod.GET)  
public @ResponseBody String custom(@RequestAttribute("foo") String foo, HttpServletRequest request) {  
    System.out.println("foo value : " + foo);    //null printed  
    System.out.println("request.getAttribute : " + request.getAttribute("foo"));    //value printed  

    return foo;  
}
4

1 回答 1

1

@RequestAttribute 不是 Spring 注释。如果你想传递一个请求参数的值,你可以这样做

@RequestMapping(value="/data/custom", method=RequestMethod.GET)  
public @ResponseBody String custom(@RequestParam("foo") String foo) {  
    System.out.println("foo value : " + foo);    //null printed      
    return foo;  
}

或者,如果您想在路径中传递值,您可以这样做

@RequestMapping(value="/data/custom/{foo}", method=RequestMethod.GET)  
public @ResponseBody String custom(@PathVariable("foo") String foo) {  
    System.out.println("foo value : " + foo);    //null printed      
    return foo;  
}
于 2014-02-20T19:58:40.167 回答