3

我有 :

@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;
    }


}

和标签:

<mvc:annotation-driven />

在我的 config.xml

我觉得应该够了,但是@Autowired 有问题:

没有为依赖找到类型 [javax.servlet.http.HttpServletResponse] 的匹配 bean:预计至少有 1 个符合条件的 bean...

我已经看到一些解决方案提到设置 bean 等,但我确信必须有一些更好的方法。注释扫描应该解决这个问题。如果我必须在不同时间为几个不同的注释在 xml 中设置 bean,那就太糟糕了。我只希望注释在我使用它们时起作用!

我见过: Spring MVC - 响应

谢谢!

4

3 回答 3

3

作为一种解决方法尝试:

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

也尝试添加RequestContextListener,但这在 Spring MVC 环境中不应该是必需的。

于 2012-03-15T12:33:58.043 回答
3

自动装配不适用于响应,仅适用于请求。有一些解决方法,但它们有点老套和蹩脚。我遇到了同样的问题,这是我原来的问题,带有解决方法的链接:@Autowired HttpServletResponse

于 2012-03-15T14:43:09.300 回答
1

它不像你想要的那样工作,作为字段,因为请求和响应在每次请求之后都会发生变化(缺乏更好的解释)。每次在字段中出现新请求/响应时,您都无法重新注入。这就是为什么您必须将它们添加到每次新注入它们的方法中。

于 2012-03-16T14:35:18.093 回答