SEC-2444: Convert Java Config samples to thymeleaf and tiles

This commit is contained in:
Rob Winch
2013-12-12 15:17:42 -06:00
parent 0d12397662
commit 4708287ad3
154 changed files with 416 additions and 81271 deletions

View File

@@ -2,13 +2,10 @@ package org.springframework.security.samples.config;
import javax.servlet.Filter;
import org.springframework.core.annotation.Order;
import org.springframework.security.samples.mvc.config.WebMvcConfiguration;
import org.springframework.web.filter.HiddenHttpMethodFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import com.opensymphony.sitemesh.webapp.SiteMeshFilter;
@Order(1)
public class MessageWebApplicationInitializer extends
AbstractAnnotationConfigDispatcherServletInitializer {
@@ -29,6 +26,6 @@ public class MessageWebApplicationInitializer extends
@Override
protected Filter[] getServletFilters() {
return new Filter[] { new SiteMeshFilter() };
return new Filter[] { new HiddenHttpMethodFilter() };
}
}

View File

@@ -35,6 +35,13 @@ public class MessageController {
return new ModelAndView("messages/show", "message", message);
}
@RequestMapping(value = "{id}", method=RequestMethod.DELETE)
public String delete(@PathVariable("id") Message message, RedirectAttributes redirect) {
messageRepository.delete(message);
redirect.addFlashAttribute("globalMessage", "Message removed successfully");
return "redirect:/";
}
@RequestMapping(params="form", method=RequestMethod.GET)
public String createForm(@ModelAttribute Message message) {
return "messages/compose";

View File

@@ -10,7 +10,12 @@ 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.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.thymeleaf.extras.tiles2.dialect.TilesDialect;
import org.thymeleaf.extras.tiles2.spring.web.configurer.ThymeleafTilesConfigurer;
import org.thymeleaf.extras.tiles2.spring.web.view.ThymeleafTilesView;
import org.thymeleaf.spring3.SpringTemplateEngine;
import org.thymeleaf.spring3.view.ThymeleafViewResolver;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
@EnableWebMvc
@ComponentScan("org.springframework.security.samples.mvc")
@@ -27,18 +32,42 @@ public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/").setCachePeriod(31556926);
registry.addResourceHandler("/resources/**").addResourceLocations("classpath:/resources/").setCachePeriod(31556926);
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}
@Bean
public InternalResourceViewResolver jspxViewResolver() {
InternalResourceViewResolver result = new InternalResourceViewResolver();
result.setPrefix("/WEB-INF/views/");
result.setSuffix(".jspx");
public ClassLoaderTemplateResolver templateResolver() {
ClassLoaderTemplateResolver result = new ClassLoaderTemplateResolver();
result.setPrefix("views/");
result.setSuffix(".html");
result.setTemplateMode("HTML5");
return result;
}
@Bean
public ThymeleafTilesConfigurer tilesConfigurer() {
ThymeleafTilesConfigurer tilesConfigurer = new ThymeleafTilesConfigurer();
tilesConfigurer.setDefinitions(new String[] { "classpath:tiles/tiles-def.xml"});
return tilesConfigurer;
}
@Bean
public SpringTemplateEngine templateEngine(ClassLoaderTemplateResolver templateResolver) {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
templateEngine.addDialect(new TilesDialect());
return templateEngine;
}
@Bean
public ThymeleafViewResolver viewResolver(SpringTemplateEngine templateEngine) {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine);
viewResolver.setViewClass(ThymeleafTilesView.class);
return viewResolver;
}
@Bean
public DomainClassConverter<?> domainClassConverter() {
return new DomainClassConverter<FormattingConversionService>(mvcConversionService);