2014-09-26 1 views
12

Я пытался найти способ изменить приветственную страницу по умолчанию для приложения с пружинной загрузкой, которое развертывается в качестве войны в процессе производства, но я могу " t найти способ сделать это без файла web.xml.Изменение приветственной страницы по умолчанию для приложения весенней загрузки, развернутого как война

Согласно документации, мы можем сделать это с помощью EmbeddedServletContainerFactory с этим кодом:

@Bean 
public EmbeddedServletContainerFactory servletContainer() { 

    TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); 

    TomcatContextCustomizer contextCustomizer = new TomcatContextCustomizer() { 
     @Override 
     public void customize(Context context) { 
      context.addWelcomeFile("/<new welcome file>"); 
     } 
    }; 
    factory.addContextCustomizers(contextCustomizer); 

    return factory; 
} 

Хотя, как мы создаем архив войны и развертывания его и не кот с помощью встроенного сервера Tomcat, это ISN ничего не делаю.

Любая идея? Если нам действительно нужно добавить файл web.xml, как мы можем это сделать и все еще использовать весеннюю загрузку? Должны ли мы указывать компонент приложения (с основным методом) в качестве контекста приложения для DispatcherServlet? В документации это не очень понятно.

Старые контейнеры сервлетов не поддерживают процесс начальной загрузки ServletContextInitializer, используемый в Servlet 3.0. Вы можете использовать Spring и Spring Boot в этих контейнерах, но вам нужно будет добавить web.xml в ваше приложение и настроить его для загрузки ApplicationContext с помощью DispatcherServlet.

Заранее благодарен!

Педро

+1

Тот факт, что у вас есть web.xml, не означает, что ServletContainerInitializer больше не работает. Просто оставьте файл web.xml в файле только с тегом 'welcome-page'. –

ответ

21

Это не слишком трудно сделать ... вам просто нужно направить по умолчанию отображение ...

@Configuration 
public class DefaultView extends WebMvcConfigurerAdapter{ 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
     registry.addViewController("/").setViewName("forward:/yourpage.html"); 
     registry.setOrder(Ordered.HIGHEST_PRECEDENCE); 
     super.addViewControllers(registry); 
    } 
} 
+0

это сработало для меня – AutoMEta

+1

@Downvoter ... прокомментировать? –

7

После Michael's tutorial, я был в состоянии только карту / к моему index.gsp файл ,

@Controller 
class Routes { 

    @RequestMapping([ 
     "/", 
     "/bikes", 
     "/milages", 
     "/gallery", 
     "/tracks", 
     "/tracks/{id:\\w+}", 
     "/location", 
     "/about" 
    ]) 
    public String index() { 
     return "forward:/index.gsp"; 
    } 
} 
0

Я делаю это следующим образом.

package org.gwtproject.tutorial.configuration; 

import org.springframework.context.annotation.Configuration; 
import org.springframework.core.Ordered; 
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 

/** 
* Configure the welcome page 
* 
*/ 
@Configuration 
public class SpringBootWelcomePageConfiguration extends WebMvcConfigurerAdapter implements WebMvcConfigurer { 

    /** 
    * redirect a user to the welcome page when he visits tha app without a 
    * destination url. 
    */ 
    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
     registry.addViewController("/").setViewName("forward:/ForExampleAGwtEntrypoint.html"); 
     registry.setOrder(Ordered.HIGHEST_PRECEDENCE); 
     super.addViewControllers(registry); 
    } 
} 
Смежные вопросы