gpt4 book ai didi

java - 异常后显示来自 liferay Hook 服务的自定义错误消息

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:05 26 4
gpt4 key购买 nike

我正在使用 Hook 覆盖 JournalArticleServiceImpl 的 addArticleupdateArticle 方法。我正在检查所有具有特定 ddmStructureKey 的文章,并且当前文章在特定字段中具有唯一值。

当我发现非唯一性时,我将抛出 DuplicateEntryException 异常。在当前的 catch 方法中,我给出了 return null;。但它抛出了一个 NullPointerException。然后我尝试像下面这样抛出 SystemException。

try {
// logic
} catch (DuplicateEntryException e) {
LOG.error("Value already present", e);
throw new SystemException("Value already present", e);
}

但最终用户的结果如下所示。即使在日志中显示了实际的错误,用户也无法从该消息中了解后台究竟发生了什么。

enter image description here

我不知道如何通过 Hook 向最终用户显示自定义错误消息。也返回同一页面编辑同一篇文章。

最佳答案

在 Liferay 中显示错误信息:

您可以使用 session 消息,例如 <liferay-ui:error>标签。

例如在jsp页面中:

<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
...
<liferay-ui:error key="err1" message="Third message" translateMessage="false"/>

或者有异常(exception),比如在 edit_article.jsp 中:

<liferay-ui:error exception="<%= ArticleContentSizeException.class %>" message="you-have-exceeded-the-maximum-web-content-size-allowed" />

您可以在 Language.properties 中定义自己的异常类和消息键以及键的值。

在渲染方法中:

SessionErrors.add(renderRequest, "err1");

或者在捕获异常时 (e) 使用这个:

SessionErrors.add(renderRequest, e.getClass());

关于 github - portlet 的完整示例, github - hook

关于java - 异常后显示来自 liferay Hook 服务的自定义错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36448608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com