【问题标题】:What is the proper way to style the error message for Global Message?为全局消息设置错误消息样式的正确方法是什么?
【发布时间】:2019-01-17 23:20:14
【问题描述】:

我想为相应的 GlobalMessage 类的特定错误消息应用一些脚本和样式,并且想知道如何在不干扰其他错误消息或来自此类的 Flash 消息的情况下实现此目的。

【问题讨论】:

    标签: hybris


    【解决方案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 替换为 StyleableGlobalMessage。然后你可以省略检查。

    【讨论】:

    • 这里可以检查类型:stackoverflow.com/questions/11348378/… 实际上不是最佳实践方法。但是由于在 Acceleratorstorefrontcommons 扩展中对可扩展性的支持非常糟糕,我认为这是最好的方式。
    • 您也可以使用“ant customize”将相应的类替换为您自己的实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    相关资源
    最近更新 更多