SEC-2444: Convert Java Config samples to thymeleaf and tiles
This commit is contained in:
@@ -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() };
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user