0

我只想显示关于露天工作流程异常的消息。但在露天异常消息格式是 1. exception.class.name 2. ErrorLogNumber 3. Message

例如 org.alfresco.service.cmr.workflow.WorkflowException: 05130007 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

我只想显示 3.Message 而不是 1.exception.class.name 和 2.ErrorLogNumber。我可以通过添加自定义异常类从消息中删除 ErrorLogNumber。但我无法从错误消息中删除 1.exception.class.name 。让我知道如何实现它。

4

3 回答 3

1

解决方案非常简单。随你的信息一起扔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为您的异常添加一个条件。

于 2016-11-17T06:07:57.920 回答
0

我遇到了与您类似的问题,即使使用调试器也无法跟踪此消息的创建位置,非常棘手。此外,Alfresco 论坛上的任何人都无法帮助我。我开发了一种解决方法,而不是直接在 java 工作流任务中引发异常,我在表单中使用了 JS 验证(我在另一篇文章中告诉你的方式),在那里我使用 ajax 调用了一个 java webscript,如果出现错误,则会显示 JS 警报盒子。

于 2012-07-10T13:38:32.953 回答
0

您是否尝试在异常类中覆盖 toString ?或者,如果以这种方式打印输出,则可能会更改记录器的实现。

于 2012-06-14T12:45:23.623 回答