2012-03-15 118 views
3

我:Spring MVC的@Autowired响应不工作

@Controller 
@RequestMapping(value="admin/*", method=RequestMethod.GET) 
public class AdminController { 

    @Autowired 
    private HttpServletRequest request; 

    @Autowired 
    private HttpServletResponse response; 

    @RequestMapping 
    public ResponseEntity<String> test0() { 
     System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 
     return null; 
    } 


} 

和标签:

在我的config.xml
<mvc:annotation-driven /> 

这应该是足够我的感觉,但有@Autowired的问题:

没有匹配的类型为[javax.servlet.http.HttpServlet回复]发现依赖:预计至少有1豆有资格...

我见过一些解决方案提到设置豆等,但我相信必须有一些更好的方法。注释扫描应该考虑到这一点。如果我必须在不同的时间在xml中为几个不同的注释设置bean,那就太糟糕了。我只是想让注释在我使用它们的时候起作用!

我看到: Spring MVC - Response

谢谢!

+0

可能的重复:http://stackoverflow.com/questions/6984054/autowired-httpservletresponse – Kevin 2012-03-15 14:41:26

回答

3

作为一种变通方法试试:

@RequestMapping 
public ResponseEntity<String> test0(
     HttpServletRequest request, 
     HttpServletResponse response) { 
    System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 
    return null; 
} 

也尝试添加RequestContextListener但这sho​​uld't在Spring MVC的环境是必需的。

+0

谢谢,但我也很感兴趣,看看为什么autowired的东西不工作... – momomo 2012-03-15 12:42:34

3

自动装配不适用于响应,仅适用于请求。有解决方法,但他们有点ha and。我遇到了同样的问题,这是我的原问题,并提供了解决方法的链接:@Autowired HttpServletResponse

+1

我可以让人们知道,我的方式解决了这个问题,最后在“*”上使用Interceptor,并在请求中设置响应....通过请求提供,这是可自动编译的... – momomo 2013-07-24 09:55:44

1

它不像您希望的那样工作,因为字段,因为请求和respose在每个请求后都会更改(缺少更好的解释)。您无法每次重新注入字段中的新请求/响应。这就是为什么你必须添加他们的方法,他们将被注入每次新的。

+0

您是否说我需要注释的getResponse()方法它的工作?你确定会工作吗? – momomo 2012-03-19 08:30:37

+1

编号请勿添加其他方法。只需添加HttpServletRequest作为test0()的参数 – Blitzkr1eg 2012-03-19 12:34:49

+0

虽然请求可注入... FYI – momomo 2013-07-24 09:57:10