我只想显示露天工作流程异常的消息。但在露天异常消息格式中就是这样 的 1。 exception.class.name 2. ErrorLogNumber 3.消息
例如, org.alfresco.service.cmr.workflow.WorkflowException:05130007 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
我只想显示3.Message而不是1.exception.class.name和2.ErrorLogNumber。我可以通过添加自定义异常类从消息中删除ErrorLogNumber。但是我无法从错误消息中删除1.exception.class.name。 让我知道如何实现这一点。
答案 0 :(得分:1)
解决方案非常简单。只需将throw new AlfrescoRuntimeException("your.message");
与您的邮件一起投放。
onFormSubmitFailure: function FormManager_onFormSubmitFailure(response)
{
var failureMsg = null;
if (response.json && response.json.message && response.json.message.indexOf("Failed to persist field 'prop_cm_name'") !== -1)
{
failureMsg = this.msg("message.details.failure.name");
}
else if (response.json && response.json.message && response.json.message.indexOf("PropertyValueSizeIsMoreMaxLengthException") !== -1)
{
failureMsg = this.msg("message.details.failure.more.max.length");
}
else if (response.json && response.json.message && response.json.message.indexOf("org.alfresco.error.AlfrescoRuntimeException") == 0)
{
var split = response.json.message.split(/(?:org.alfresco.error.AlfrescoRuntimeException:\s*\d*\s*)/ig);
if (split && split[1])
{
failureMsg = split[1];
}
}
Alfresco.util.PopupManager.displayPrompt(
{
title: this.msg(this.options.failureMessageKey),
text: failureMsg ? failureMsg : (response.json && response.json.message ? response.json.message : this.msg("message.details.failure"))
});
},
在这种情况下,您会收到一条消息,但是松散的异常子类型。
在alfresco javaScript代码中看到异常处理时,我很难用语言解释我是多么惊讶:
alfresco.js
正如您所看到的,他们从java中“捕获”类名并将其替换为message。我希望他们提供更多可扩展的方法来处理客户异常。
P.S。当然,另一种方法是扩展if else
文件,并为您的例外添加一个{{1}}条件。
答案 1 :(得分:0)
您是否尝试在异常类中覆盖toString?或者如果以这种方式打印输出,可能会更改记录器实现。
答案 2 :(得分:0)
我遇到了类似的问题,即使使用调试器也无法跟踪创建此消息的位置,非常棘手。此外,Alfresco论坛上的任何人都无法帮助我。 我开发了一个解决方法而不是直接在java工作流任务中抛出异常,我在表单中使用了JS验证(我在另一篇文章中告诉你的方式),在那里我使用ajax调用了一个java webscript,在出现错误的情况下显示JS警报框。