Last active
August 29, 2015 14:02
-
-
Save dtelaroli/abdfd1ba4ef01abcf18b to your computer and use it in GitHub Desktop.
Exemplo de uso do Thymeleaf com VRaptor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<dependency> | |
<groupId>org.thymeleaf</groupId> | |
<artifactId>thymeleaf</artifactId> | |
<version>2.1.3.RELEASE</version> | |
</dependency> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@ApplicationScoped | |
public class ThymeleafComponent { | |
private TemplateEngine templateEngine; | |
private WebContext ctx; | |
private HttpServletRequest request; | |
private HttpServletResponse response; | |
private ServletContext servletContext; | |
private String template; | |
private DefaultControllerTranslator defaultControllerTranslator; | |
private MutableRequest mutableRequest; | |
private ControllerMethod method; | |
@Deprecated | |
public ThymeleafComponent() { | |
} | |
@Inject | |
public ThymeleafComponent(HttpServletRequest request, HttpServletResponse response, ServletContext servletContext, | |
DefaultControllerTranslator defaultControllerTranslator, MutableRequest mutableRequest) { | |
this.request = request; | |
this.response = response; | |
this.servletContext = servletContext; | |
this.defaultControllerTranslator = defaultControllerTranslator; | |
this.mutableRequest = mutableRequest; | |
} | |
@PostConstruct | |
public void init() { | |
method = defaultControllerTranslator.translate(mutableRequest); | |
template = defaultTemplate(); | |
createTemplateEngine(); | |
ctx = createWebContext(); | |
} | |
private String defaultTemplate() { | |
return method.getMethod().getName(); | |
} | |
private void createTemplateEngine() { | |
templateEngine = new TemplateEngine(); | |
ServletContextTemplateResolver templateResolver = createTemplateResolver(); | |
templateEngine.setTemplateResolver(templateResolver); | |
} | |
private ServletContextTemplateResolver createTemplateResolver() { | |
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(); | |
templateResolver.setTemplateMode("XHTML"); | |
templateResolver.setPrefix("/WEB-INF/jsp/"+ controllerName() +"/"); | |
templateResolver.setCacheTTLMs(3600000L); | |
templateResolver.setSuffix(".jsp"); | |
return templateResolver; | |
} | |
private WebContext createWebContext() { | |
return new WebContext(request, response, servletContext, request.getLocale()); | |
} | |
private String controllerName() { | |
return StringUtils.lowercaseFirst(method.getController().getType().getSimpleName().replace("Controller", "")); | |
} | |
public void template(String templateName) { | |
template = templateName; | |
} | |
public void process() { | |
try { | |
templateEngine.process(template, ctx, response.getWriter()); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
public void include(String key, Object value) { | |
ctx.setVariable(key, value); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@RequestScoped | |
public class ThymeleafResult implements View { | |
private ThymeleafComponent thymeleafComponent; | |
private DefaultResult defaultResult; | |
@Deprecated | |
public ThymeleafResult() { | |
} | |
@Inject | |
public ThymeleafResult(DefaultResult defaultResult, ThymeleafComponent thymeleafComponent) { | |
this.defaultResult = defaultResult; | |
this.thymeleafComponent = thymeleafComponent; | |
} | |
public ThymeleafResult withTemplate(String name) { | |
thymeleafComponent.template(name); | |
return this; | |
} | |
public View include(String key, Object value) { | |
thymeleafComponent.include(key, value); | |
return this; | |
} | |
public <T extends View> T use(Class<T> view) { | |
return defaultResult.use(view); | |
} | |
@PreDestroy | |
public void render() { | |
thymeleafComponent.process(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Controller | |
public class UserController { | |
@Inject private Result result; | |
public UserController() { | |
} | |
public void index() { | |
result.use(ThymeleafResult.class).include("user", "Foo"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment