【问题标题】:Hybris: show error message on storefrontHybris:在店面显示错误消息
【发布时间】:2016-11-08 08:56:23
【问题描述】:

如果产品离线,我想在用户在购物车页面结账时在店面显示相同的错误消息。我更新了 Controller 类中的源代码,并将错误消息添加到 GlobalMessages 如下:

GlobalMessages.addMessage(model, GlobalMessages.ERROR_MESSAGES_HOLDER, "basket.validation.offlineProduct", new Object[] { productData.getName(), productUrl, quantity });

我在属性文件中添加了这个错误属性“basket.validation.offlineProduct”,如下所示:

basket.validation.offlineProduct=Unfortunately <a href="{1}">{0}</a> was removed from your cart as it is offline. You previously had {2} in your cart.

但错误消息没有显示,虽然在调试时我的自定义代码被调用并且错误消息代码被设置为模型。

显示错误消息所需的其他设置已存在于 jsp 文件中,如下所示:

<%@ taglib prefix="common" tagdir="/WEB-INF/tags/desktop/common" %>
<common:globalMessages/>

我检查了其他控制器文件源代码,过程似乎相同,并且错误消息显示在其他页面上。我也试过删除缓存并重新启动服务器。

【问题讨论】:

  • 我强烈建议在属性文件中只使用文本。不要在那里存储 html。
  • @Hristo.. 我也尝试使用非 html 属性。它没有用。

标签: hybris storefront


【解决方案1】:

如果我是你,我会尝试做接下来的事情:

1) 尝试显示不带任何参数的消息,例如 - "Product was removed from your cart as it is offline"。如果它正常工作 - 问题出在属性中。

2)尝试使用其他东西而不是GlobalMessages,比如

String error = l10NService.getLocalizedString("basket.validation.offlineProduct",new Object[] { productData.getName(), productUrl, quantity });
model.addAttribute("productError", error);

【讨论】:

  • 我实际上已经尝试了这两种解决方案。但它仍然没有在屏幕上显示错误消息。虽然,默认的 hybris 错误消息出现在屏幕上。我认为这两种解决方案都应该有效,但事实并非如此。我的代码可能有问题,我无法理解。谢谢!
  • 我明白了。好吧,我认为如果调试显示该属性设置为模型,但在店面 Hybris 显示一些其他消息 - 我认为您应该检查模型对于您的控制器和店面是否相同(例如,添加一些参数并输出它)。
  • 或者你的信息被某种方式覆盖了
  • 在店面,它没有显示任何关于我的更改的消息。是的,我检查了模型是否正确。我检查了库存何时为零(forceOutOfStock),然后进行默认的 hybris 检查并将错误消息保存在模型中,并且同样显示在店面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-18
  • 1970-01-01
  • 2011-03-12
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多