FlashMessageDirective.java 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. *
  3. *
  4. *
  5. */
  6. package com.hboxs.template.directive;
  7. import com.hboxs.common.Message;
  8. import freemarker.core.Environment;
  9. import freemarker.template.TemplateDirectiveBody;
  10. import freemarker.template.TemplateException;
  11. import freemarker.template.TemplateModel;
  12. import org.springframework.stereotype.Component;
  13. import org.springframework.web.context.request.RequestAttributes;
  14. import org.springframework.web.context.request.RequestContextHolder;
  15. import java.io.IOException;
  16. import java.io.Writer;
  17. import java.util.Map;
  18. /**
  19. * 模板指令 - 瞬时消息
  20. */
  21. @Component("flashMessageDirective")
  22. public class FlashMessageDirective extends BaseDirective {
  23. /**
  24. * "瞬时消息"属性名称
  25. */
  26. public static final String FLASH_MESSAGE_ATTRIBUTE_NAME = FlashMessageDirective.class.getName() + ".FLASH_MESSAGE";
  27. /**
  28. * 变量名称
  29. */
  30. private static final String VARIABLE_NAME = "flashMessage";
  31. @SuppressWarnings("rawtypes")
  32. public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body) throws TemplateException, IOException {
  33. RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes();
  34. if (requestAttributes != null) {
  35. Message message = (Message) requestAttributes.getAttribute(FLASH_MESSAGE_ATTRIBUTE_NAME, RequestAttributes.SCOPE_REQUEST);
  36. if (body != null) {
  37. setLocalVariable(VARIABLE_NAME, message, env, body);
  38. } else {
  39. if (message != null) {
  40. Writer out = env.getOut();
  41. out.write("$.message(\"" + message.getType() + "\", \"" + message.getContent() + "\");");
  42. }
  43. }
  44. }
  45. }
  46. }