package com.hongqiang.shop.common.template; import java.io.IOException; import java.io.Writer; import java.util.Map; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import com.hongqiang.shop.common.utils.Message; import freemarker.core.Environment; import freemarker.template.TemplateDirectiveBody; import freemarker.template.TemplateException; import freemarker.template.TemplateModel; @Component("flashMessageDirective") public class FlashMessageDirective extends BaseDirective { public static final String FLASH_MESSAGE_ATTRIBUTE_NAME = FlashMessageDirective.class.getName() + ".FLASH_MESSAGE"; private static final String FLASH_MESSAGE = "flashMessage"; public void execute(Environment env, @SuppressWarnings("rawtypes") Map params, TemplateModel[] loopVars, TemplateDirectiveBody body) throws TemplateException, IOException { RequestAttributes localRequestAttributes = RequestContextHolder.currentRequestAttributes(); if (localRequestAttributes != null) { Message localMessage = (Message)localRequestAttributes.getAttribute(FLASH_MESSAGE_ATTRIBUTE_NAME, 0); if (body != null) { setFreemarker(FLASH_MESSAGE, localMessage, env, body); } else if (localMessage != null) { Writer localWriter = env.getOut(); localWriter.write("$.message(\"" + localMessage.getType() + "\", \"" + localMessage.getContent() + "\");"); } } } }