package com.hantsylabs.example.spring.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.data.web.config.SpringDataWebConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.view.tiles3.TilesConfigurer;
@Configuration
@EnableWebMvc
@ComponentScan(
basePackages= {"com.hantsylabs.example.spring"},
useDefaultFilters = false,
includeFilters = {
@Filter(
type = FilterType.ANNOTATION,
value = {
Controller.class,
RestController.class,
ControllerAdvice.class
})
}
)
public class WebConfig extends SpringDataWebConfiguration {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addRedirectViewController("/", "/tasks");
// registry
// .addViewController("/add")
// .setViewName("add");
// registry
// .addViewController("/edit")
// .setViewName("edit");
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry
.tiles();
// .prefix("WEB-INF/views")
// .suffix(".jspx");
}
@Bean
public TilesConfigurer tilesConfiguer() {
TilesConfigurer config=new TilesConfigurer();
config.setDefinitions("/WEB-INF/tiles/definitions.xml");
return config;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/**")
.addResourceLocations("classpath:/static/");
registry
.addResourceHandler("webjars/**")
.addResourceLocations("classpath:META-INF/resources/webjars/");
}
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorParameter(false);
configurer.favorPathExtension(false);
}
}