Красивое сопоставление URL с Spring 3.0

Я получаю следующую ошибку при попытке сопоставить URL-адрес с именем «новый» с методом контроллера, который выполняет некоторую логику, а затем отображает представление «index.jsp»:

ВНИМАНИЕ: не найдено сопоставление для HTTP-запроса с URI [/springguestbook/index.jsp] в DispatcherServlet с именем «springguestbook».

Это мой метод контроллера:

@RequestMapping(value = "/list", method = RequestMethod.GET)
public String showGuestbookEntries(HttpServletRequest request, Model model) {
    HttpSession session = request.getSession(true);
    this.guestbookService = GuestbookService.getInstance(session);
    model.addAttribute("guestbookEntries",
            guestbookService.getGuestbookEntries());

    return "index";

}

Это содержимое моего файла web.xml:

<display-name>Spring Guestbook</display-name>

<servlet>
    <servlet-name>springguestbook</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springguestbook</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

И это конфигурация моего ViewResolver:

<bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

Мне кажется, что вместо фактического чтения содержимого index.jsp и его отображения метод просто перенаправляется на index.jsp. Как я могу это исправить?


person doque    schedule 10.06.2013    source источник


Ответы (1)


Две вещи:

  1. Попробуйте изменить отображение сервлета на это (измените /* на /):

    <servlet-mapping>
        <servlet-name>springguestbook</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
  2. Убедитесь, что вы используете преобразователь представлений, который может найти ваш JSP, например InternalResourceViewResolver:

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver b = new InternalResourceViewResolver();
        b.setPrefix("/WEB-INF/jsp/");
        b.setSuffix(".jsp");
        return b;
    }
    

or

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>
person superEb    schedule 10.06.2013
comment
Я не хочу быть жадным, но не могли бы вы проголосовать за мой ответ? - person superEb; 11.06.2013