解决方案非常简单。随你的信息一起扔AlfrescoRuntimeException
。
throw new AlfrescoRuntimeException("your.message");
在这种情况下,您会收到一条消息,但会出现松散的异常子类型。
当在露天 javaScript 代码中看到异常处理时,真的很难用语言解释我是如何感到惊讶的:
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"))
});
},
正如您所看到的,它们从 java 中“捕获”类名并将其替换为消息。我希望他们提供更多可扩展的方式来处理客户异常。
PS当然另一种方法是扩展alfresco.js
文件并if else
为您的异常添加一个条件。