Spring MVC для аннотаций всегда требуется объект Response - PullRequest
1 голос
/ 14 июня 2011

Я пытаюсь преобразовать контроллеры из старой структуры наследования в новые аннотации.

Вот существующий контроллер:

public class SelectedTabController extends AbstractController {

private TabSelectionHelper tabSelectionHelper;

public ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
    String param = request.getParameter("selectedTab");
    if (param != null)
        tabSelectionHelper.setSelectedTabTo(param);
    return null;
}

public void setTabSelectionHelper(TabSelectionHelper tabSelectionHelper) {
    this.tabSelectionHelper = tabSelectionHelper;
}

И после преобразования у меня есть это:

@Controller
public class SelectedTabController {

    private TabSelectionHelper tabSelectionHelper;

    @Autowired
    public SelectedTabController(@Qualifier(value = "tabSelectionHelper") TabSelectionHelper tabSelectionHelper) {
        this.tabSelectionHelper = tabSelectionHelper;
    }

    @RequestMapping("/selectedTab")
    public void selectTab(String selectedTab, HttpServletResponse response) throws Exception {
        //String param = request.getParameter("selectedTab");
        if (selectedTab != null)
            tabSelectionHelper.setSelectedTabTo(selectedTab);
    }
}

Это работает, но в списке параметров selectTab есть (избыточный) объект HttpServletResponse.Если я удаляю его, то вызов JQuery сообщает, что сервер возвращает 500, и вызов не выполняется.

Любая помощь?

Трассировка стека показывает:

javax.servlet.ServletException: Could not resolve view with name 'selectedTab' in servlet with name 'prodman'

Так что этопытается найти вид и терпит неудачу.Тем не менее, нет никакого представления для отображения в качестве его внутреннего вызова JQuery.

Я думаю, объявив объект ответа, Spring думает, что я напишу ответ.

Как я могу предотвратить попытки Springразрешить вид?

1 Ответ

2 голосов
/ 15 июня 2011

Когда вы используете void в качестве возвращаемого типа, Spring по умолчанию будет пытаться определить имя представления по имени вашего метода, если только он не думает, что вы пишете ответ напрямую (что происходит, когда в качестве параметра используется HttpServletResponse).Взгляните на раздел 15.3.2.3 документов Spring 3.

Возможно, вы захотите попробовать изменить тип возвращаемого значения на ModelAndView и вернуть null и посмотреть, что произойдет (я не уверен, что вы можете обойтись безнулевое представление с @RequestMapping, так как я никогда не пробовал)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...