Spring MVC @AutoWired ответ не работает - PullRequest
3 голосов
/ 15 марта 2012

у меня есть:

@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] для зависимости: ожидается как минимум 1 компонент, который соответствует ...

Я видел несколько решений, упоминающих настройку bean-компонентов и тому подобное, но я уверен, что должен быть какой-то лучший способ. Сканирование аннотации должно позаботиться об этом. Было бы плохо, если бы мне пришлось настраивать bean-компоненты в xml для нескольких разных аннотаций в разное время. Я просто хочу, чтобы аннотации работали, когда я их использую!

Я видел: Spring MVC - Ответ

Спасибо!

Ответы [ 3 ]

3 голосов
/ 15 марта 2012

Автопроводка не работает для ответа, только запрос. Есть обходные пути, но они отчасти хакерские и отстойные. Я столкнулся с той же проблемой, вот мой оригинальный вопрос со ссылкой на обходной путь: @ Autowired HttpServletResponse

3 голосов
/ 15 марта 2012

В качестве обходного пути попробуйте:

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

Также попробуйте добавить RequestContextListener, но это не требуется в среде Spring MVC.

1 голос
/ 16 марта 2012

Он работает не так, как вы хотите, как поля, потому что запрос и изменение меняются после каждого запроса (из-за отсутствия лучшего объяснения). Вы не можете повторно вводить каждый раз новый запрос / ответ в полях. Вот почему вы должны добавить их в метод, где они будут вводиться каждый раз, когда новые.

...