package message.template.resource; import message.utils.StringUtils; import org.thymeleaf.TemplateEngine; import org.thymeleaf.context.Context; import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver; import org.thymeleaf.templateresolver.TemplateResolver; import java.util.Locale; import java.util.Map; /** * Thymeleaf模板引擎生成的Resource<br/> * * @author sunhao(sunhao.java@gmail.com) * @version V1.0, 14-8-30 上午1:03 */ public class ThymeleafTemplateResource extends AbstractTemplateResource { private String templateMode; /** * templateMode default is html5 * * @param template * @param context */ public ThymeleafTemplateResource(String template, Map<String, ?> context) { super(template, context, "resource load by Thymeleaf!"); this.templateMode = "html5"; } /** * <p> * template modes defined by the {@link org.thymeleaf.templatemode.StandardTemplateModeHandlers} class. * Standard template modes are: * </p> * <ul> * <li>XML</li> * <li>VALIDXML</li> * <li>XHTML</li> * <li>VALIDXHTML</li> * <li>HTML5</li> * <li>LEGACYHTML5 (for non XML-formed HTML5 code –needs tag balancing prior to parsing)</li> * </ul> * * @param template * @param context * @param templateMode */ public ThymeleafTemplateResource(String template, Map<String, ?> context, String templateMode) { super(template, context, "resource load by Thymeleaf!"); this.templateMode = StringUtils.upperCase(templateMode); } @Override public String renderTemplate() { TemplateEngine templateEngine = new TemplateEngine(); TemplateResolver templateResolver = new ClassLoaderTemplateResolver(); templateResolver.setTemplateMode(this.templateMode); templateEngine.setTemplateResolver(templateResolver); return templateEngine.process(template, new Context(Locale.SIMPLIFIED_CHINESE, context)); } }