Метод Spring3 MultiActionController - разрешение обработчика. MapAndView vs String - PullRequest
0 голосов
/ 23 марта 2012

Сначала немного контекста:

web.xml:

Я соответствую всем / app / * запросам моего диспетчера:

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/app/*</url-pattern>
</servlet-mapping>

Мой вопрос, почему вызов / app / import / view работает при возврате строки:

Контроллер:

public class ImportController extends MultiActionController {

    public String view(HttpServletRequest request, HttpServletResponse response) throws Exception
        return "importer.home";
    }

но НЕ при возврате ModelAndView:

public class ImportController extends MultiActionController {

    public ModelAndView view(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mav = new ModelAndView("importer.home");
        mav.addObject(new ExlFile());
        return mav;
    }

Есть ли другое соглашение об именах, если мы используем ModelAndView?

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

Если вы используете Spring 3.0, то я предпочитаю использовать аннотации.

@Controller
@RequestMapping(value  = "/app")
public class ImportController {

    @RequestMapping(value="/importer/home")
    public ModelAndView view(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mav = new ModelAndView("importer.home");
        mav.addObject(new ExlFile());
        return mav;
    }
2 голосов
/ 23 марта 2012

Вы используете MultiActionController, который имеет очень строгие ограничения на соглашения об именах методов и подписи.

Тем не менее, вы вообще не должны использовать MultiActionController, оно устарело и устарело. Напишите контроллеры, как описано в руководстве Spring, т. Е. Используя @Controller и @RequestMapping, тогда вы получите гораздо более гибкие сигнатуры методов.

...