2016-08-23 4 views
1

Ich habe Probleme beim Ausführen meiner SpringMVC-App mit SpringBoot. Die Anwendung kann den zugeordneten Controller aufrufen und die Sicht erfolgreich auflösen, ist jedoch nicht in der Lage, den statischen Inhalt aufzulösen.Spring Boot-Dispatcher Servlet kann statische Inhalte nicht finden/zuordnen

Ich habe, dass der Frühling lesen Boot automatisch die folgenden Ordner für statische Ressource sieht: - static, public Web_INF/resources etc.

Ich habe meine Dateien auf folgenden Orten versucht, halten aber immer noch nicht helfen.

Meine Ausgabe auf Konsole ist:

Innen-Controller 2016.08.23 17: 22: 12.002 [http-nio-9990-exec-1] [org.springframework.web.servlet.PageNotFoundn ] [Warnen] org.springframework.web.servlet.PageNotFound: {} - Keine Zuordnung für HTTP-Anforderung mit URI [/springBootApp/templates/hello.html] in DispatcherServlet mit dem Namen 'DispatcherServlet'

wo ist SpringBootApp mein Kontextstamm

Hier sind meine Klassen: - SpringBoot Klasse: -

@SpringBootApplication 
public class ServiceApplication extends SpringBootServletInitializer { 

    public static void main(String[] args) { 
     SpringApplication app = new SpringApplication(ServiceApplication.class); 
     Set<ApplicationContextInitializer<?>> initLst = app.getInitializers(); 
     initLst.add(new PropertyPasswordDecodingContextInitializer()); 
     app.setInitializers(initLst); 

     ApplicationContext ctx = app.run(args); 

     System.out.println("Services Started"); 
    } 
    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
     application = application.initializers(new PropertyPasswordDecodingContextInitializer()); 

     return application.sources(ServiceApplication.class); 
    } 

    @Override 
    protected WebApplicationContext createRootApplicationContext(ServletContext servletContext) { 
     //project specific config 
    } 

    @Bean 
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { 
     return new PropertySourcesPlaceholderConfigurer(); 
    } 

} 

MVCConfigClass:

@EnableWebMvc 
@Configuration 
@ComponentScan(basePackageClasses = ServiceApplication.class, includeFilters = @Filter(Controller.class), useDefaultFilters = false) 
public class WebMvcConfig extends WebMvcConfigurationSupport { 

    @Bean 
    public ViewResolver configureViewResolver() { 
     InternalResourceViewResolver viewResolve = new InternalResourceViewResolver(); 
     viewResolve.setPrefix("/templates/"); 
     viewResolve.setSuffix(".html"); 

     return viewResolve; 
    } 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/templates/**").addResourceLocations("/templates/"); 
     } 

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

} 

Restful Web Services Class-

@RestController 
@RequestMapping(value = "/myapp") 
public class TestWebService { 

    @RequestMapping(value = { "/hello" }, method = { RequestMethod.GET, RequestMethod.POST }) 
    public ModelAndView list(HttpServletRequest request) throws Exception { 
     // HttpSession session = request.getSession(); 
     System.out.println("Inside Controller"); 
     ModelAndView modelView = new ModelAndView(); 
     ModelMap modelMap = modelView.getModelMap(); 
     modelView.setViewName("/hello"); 
     return modelView; 
    } 

} 

ich die obige Ausgabe erhalten beim Aufruf : - http://localhost:9990/springBootApp/myapp/hello

+0

Ein '@ RestController' soll eine Antwort * direkt * zurückgeben, wie in JSON oder XML. Verwenden Sie einen einfachen @ Controller, wenn Sie eine HTML-Vorlage rendern möchten. – chrylis

+0

wird es weitere Methoden geben, die jsons – Saumyaraj

+1

@Saumyaraj zurückgeben, dann sollten Sie diese mit '@ ResponseBody' annotieren oder separate Controller verwenden. – g00glen00b

Antwort

0

Erweitern WebMvcConfigurerAdapter löste das Problem

0

Spring Boot automatisch finden Ressourcen im Ordner src/main/resources. Wenn Sie jedoch WebMvcConfigurationSupport-Methoden für die Ressourcenbehandlung implementieren, wird die Standardimplementierung der Ressourcenbehandlungsmethode entfernt.

+0

Ja, ich hatte die addResource-Handler aber immer noch überschrieben konnte die statischen Ressourcen nicht abrufen – Saumyaraj

Verwandte Themen