Spring MVC项目中的@RequestAttribute不获取值

时间:2013-04-03 12:39:13

标签: java spring spring-mvc spring-annotations

Spring MVC项目中的

@RequestAttribute无法获取值。

我使用 @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;  
}

1 个答案:

答案 0 :(得分: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;  
}