为全局消息设置错误消息样式的正确方法是什么?

时间:2019-01-17 23:20:14

标签: hybris

我想为相应的GlobalMessage类的特定错误消息应用一些脚本和样式,并想知道实现此方法的方法,而又不会打扰此类中的其他错误消息或Flash消息。

1 个答案:

答案 0 :(得分:1)

像这样扩展类de.hybris.platform.acceleratorstorefrontcommons.controllers.util.GlobalMessage

class StylableGlobalMessage extends GlobalMessage {
  private cssClass;
  setCssClass...
  getCssClass...
}

创建一个新方法以将该消息添加到模型中。类似于 de.hybris.platform.acceleratorstorefrontcommons.controllers.util.GlobalMessages#addMessage

final StylableGlobalMessage message = new StylableGlobalMessage();
message.setCode(messageKey);
message.setAttributes(attributes != null ? Arrays.asList(attributes) : Collections.emptyList());
message.setCssClass(cssClass);

List<GlobalMessage> currentMessages = (List<GlobalMessage>) model.getModelMap().get(messageHolder);
// Check if null etc.
currentMessages.add(message);

像这样向文件/mystorefront/web/webroot/WEB-INF/tags/desktop/common/globalMessages.tag引入新属性:

<div class="alert neutral ${msg.cssClass}">
    <spring:theme code="${msg.code}" arguments="${msg.attributes}"/>
</div>

请记住在访问cssClass属性之前检查msg的类型。或者,您将每个GlobalMessage替换为StylableGlobalMessage。然后您可以省略支票。