java-在发生异常后显示来自liferay挂钩服务的自定义错误消息
作者:互联网
我使用Hook覆盖了JournalArticleServiceImpl的addArticle和updateArticle方法.我正在检查具有特定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);
}
但是最终用户的结果如下所示.即使在日志中显示了实际错误,用户也无法从该消息中了解到底在后台发生了什么.
我不知道如何从Hook向最终用户显示自定义错误消息.还可以返回同一页面来编辑同一文章.
解决方法:
在Liferay中显示错误消息:
您可以使用会话消息,例如< liferay-ui:error>标签.
例如在jsp页面中:
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
...
<liferay-ui:error key="err1" message="Third message" translateMessage="false"/>
或有例外,例如在edit_article.jsp中:
<liferay-ui:error exception="<%= ArticleContentSizeException.class %>" message="you-have-exceeded-the-maximum-web-content-size-allowed" />
您可以在Language.properties中定义自己的异常类,自己的消息键和键的值.
并在render方法中:
SessionErrors.add(renderRequest, "err1");
或在捕获异常时(e)使用此命令:
SessionErrors.add(renderRequest, e.getClass());
关于github – portlet、github – hook的完整示例
标签:liferay,java,liferay-hook 来源: https://codeday.me/bug/20191118/2031221.html