Весеннее правильное отображение списка файлов приветствия - PullRequest
9 голосов
/ 14 сентября 2011

Я знаю, что весной я должен определить welcome-файл, который должен находиться вне папки WEB-INF, поэтому я определяю его так:

web.xml:

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>


<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

Но на самом деле мой настоящий код находится в WEB-INF / jsp / contact.jsp

Так что я всегда должен делать это:

<jsp:forward page="/index"></jsp:forward>

А в моем контроллере это означает:

@RequestMapping("/index")
public String listContacts(Map<String, Object> map) {

    map.put("contact", new Contact());
    map.put("contactList", contactService.listContact());

    return "contact";
}

Как я могу сделать так, чтобы welcome-файл всегда отправлялся в мое отображение индекса, что приводит к contact.jsp?

Не стесняйтесь задавать вопросы, если это сбивает с толку ...

Ответы [ 4 ]

22 голосов
/ 14 сентября 2011
@RequestMapping({"/index", "/"})

и

<welcome-file-list>
    <welcome-file></welcome-file>
</welcome-file-list>

работал для меня.

4 голосов
/ 22 марта 2013

Смотрите мой ответ: https://stackoverflow.com/a/15551678/173149 или просто:

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
    <url-pattern>/index.htm</url-pattern>    <<==  *1*
</servlet-mapping>
<welcome-file-list>
    <welcome-file>index.htm</welcome-file>   <<== *2*
</welcome-file-list>
2 голосов
/ 04 мая 2014

В случае конфигурации Java вы можете переопределить два метода в классе, который расширяет WebMvcConfigurerAdapter

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("/index");
}

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
}

Если вы хотите явно обслуживать index.html, включите его в метод переопределения ресурса в том же классе, как показано ниже:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/index.html").addResourceLocations("/WEB-INF/views/index.html");
}

Конечно, addResourceLocations должно следовать за выбранной папкой для хранения ваших просмотров.

См. эти образцы

0 голосов
/ 14 сентября 2011

Попробуйте использовать

<welcome-file-list>
  <welcome-file>/index</welcome-file>
</welcome-file-list>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...