【问题标题】:User-friendly error message from user event script (SuiteScript 2.0)?来自用户事件脚本 (SuiteScript 2.0) 的用户友好错误消息?
【发布时间】:2016-12-23 02:11:11
【问题描述】:

我正在尝试使用 SuiteScript 2.0 向 NetSuite 中的记录类型添加一些自定义验证。

在客户端,我已经能够使用客户端脚本在提交之前验证字段。这很好用,并显示一条用户友好的错误消息来解释问题所在。

在服务器端,使用用户事件脚本,我也执行相同的验证。这会捕获不使用客户端脚本的其他来源(例如 CSV 上传)的违规行为。如果发现违规,脚本会使用错误模块抛出错误(例如 throw error.create({...}))

但是,用户可以执行某些不使用客户端脚本但修改记录的操作(例如,在记录的查看屏幕上按下 void 按钮)。如果用户事件脚本检测到违规,它最终会在空白屏幕上显示错误消息(格式为 json)。不是最用户友好的。

至少,有没有办法在未格式化为 JSON 的空白屏幕上显示消息?理想情况下,最好使用 message.create/show 模块在与按钮相同的屏幕上显示错误消息。

【问题讨论】:

  • 这里提供了一个解决方案:stackoverflow.com/questions/38632350/… 但是,它似乎不起作用,因为它只是打印出更长的 json 错误消息。
  • 我在 2.0 中还没有找到这样做的方法;您总是会收到 JSON 消息。在 1.0 中,如果您使用 nlapiCreateError 抛出 nlobjError,您会得到一个干净整洁的 NetSuite 页面,其中只有纯文本的错误消息。
  • 这里提供了一个新的解决方案:stackoverflow.com/questions/38632350/… 看起来您需要做的只是抛出一个字符串而不是错误对象?
  • 某种作品 - 它确实只返回字符串作为错误消息。但是,由于您没有在抛出的对象上指定 notifyOff,套件脚本将向脚本所有者发送电子邮件。您必须关闭套件脚本上的异常通知以避免这种情况。无法相信没有更好的支持从用户事件脚本向用户报告异常。
  • 下面@Koby Pichkhadze 提供的解决方案工作正常,它解决了通知问题和JSON 问题。

标签: netsuite suitescript


【解决方案1】:

由于 toString 和 toJSON 函数的覆盖不可用,我建议使用 CSS 解决方案,仅将原始 JSON 输出替换为所需的文本。只需在消息中添加您的 css 表达式...

试试这个:

beforeSubmit: function(scriptContext) {
var errorText = 'This is the error',
    msg = '<style>.text {display: none;}' // this will hide the JSON message
            + '.bglt td:first-child:not(.textboldnolink):after {'
            + 'color:black;font-size:8pt;' // set the desired css for our message
            + 'content: url(/images/5square.gif) \''
            +  errorText 
            + '\'}'                     
        + '</style>',
    err = error.create({
    name: 'NO_JSON',
    message: msg,
    notifyOff: true
});

throw err;
}

您还可以使用以下方法删除“通知 (SuiteScript)”:

var msg = '<style>' 
            + '.text {display: none;}' 
            + '.bglt td:first-child:not(.textboldnolink):after {'
            + 'color:red;'
            + 'content: \''
            +  errorText 
            + '\'}' 
            + '.textboldnolink {display: none;}' 
            + '</style>';

【讨论】:

  • 请在您的答案中添加解释。
  • 由于无法覆盖 toString 和 toJSON 函数,我建议使用 CSS 解决方案,仅将原始 JSON 输出替换为所需文本。只需在消息中添加您的 css 表达式...
  • 这个被弃用了吗?我正在运行它,它并没有给我一个漂亮的错误显示。这只是文本json
  • @Godrules500 这正是我在看到课程时要提到的,NetSuite 可能更新了它们,这不是很可靠,如果你想为你的验证显示一个好消息,你应该这样做在客户端脚本中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多