You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flowable中Groovy脚本生成HTML报错求助

问题解决:Flowable中Groovy脚本生成HTML的报错修复

错误原因分析

报错groovy.lang.MissingMethodException: No signature of method: ... $()的核心原因是错误地在代码逻辑中使用了字符串插值语法${变量}:

  • Groovy里${}仅用于字符串内部的变量替换,在if判断、变量赋值等代码逻辑场景,直接写变量名即可,不需要包裹${}。
  • 额外的语法错误(未闭合引号、未初始化变量、错误的println写法)也导致脚本无法正常执行。

修正后的完整脚本

def html = ''
execution.setVariable("note_read", "unknown") 
def table = '<table style="border-width: 0px; border-image: initial; background: #d9d9d9; font: 12px Arial, sans-serif; width: 100%; height: 172px; border-color: #dddddd initial #dddddd initial; border-style: solid initial solid initial;">'
def endtable = '</table>'
def tbody = '<tbody>'
def endtbody = '</tbody>'

// 生成表格行的方法
def riga(nomeriga, valoreriga)  {
    def var = '<tr style="height: 17px;">'
    var += '<td style="padding: 3px 5px; width: 33%; vertical-align: text-top; height: 17px;">'
    var += "<strong>${nomeriga}</strong> : ${valoreriga}"
    var += '</td></tr>'
    
    println var
    return var
}

// 生成Ambito1表格的方法
def create_table_ambito1() {
    def t = table  // 初始化t为表格起始标签
    t += tbody
    t += riga('Ambito di competenza :', so_type)
    t += riga('Descrizione :', so_desc)
    t += riga('Ha svolto in passato un ruolo di Amministratore di Sistema Operativo?', so_ruolop)

    if(so_ruolop == 'SI') {
        t += riga('Descrizione ruolo svolto in passato', so_ruolopDesc)
    }

    t += riga('Certificazioni Tecniche a supporto della richiesta :', so_cert)

    if(so_cert == 'SI') {
        t += riga('Descrizione Certificazioni Tecniche a supporto della richiesta :', so_cert_desc)
    }

    t += riga('Ha seguito un corso di formazione?', so_corsi)
    if(so_corsi == 'SI') {
        t += riga('Descrizione corsi svolti', so_corsi_desc)
    }

    t += endtbody
    t += endtable

    println t
    return t
}

// 判断并生成HTML
if(so == 'amm_so'){
    html = create_table_ambito1()  // 仅调用一次并接收返回值
}
execution.setVariable("note_read", html)

关键修改点说明

  1. 移除代码逻辑中的${}:
    • 把if(${so_ruolop} == 'SI')改成if(so_ruolop == 'SI'),所有变量直接引用,不再用${}包裹。
  2. 修复语法错误:
    • 闭合println "${var}的双引号,改为println var或println "${var}"。
    • 初始化create_table_ambito1中的t变量,从def t = t+table改为def t = table。
    • 修正println(${t}为println t。
  3. 优化函数调用:
    • 移除冗余的create_table_ambito1()调用,直接将返回值赋值给html变量。
  4. 简化字符串拼接:
    • 使用+=替代var = var+,让代码更简洁。
    • 字符串插值直接用"${nomeriga}",提升可读性。

内容的提问来源于stack exchange,提问作者Zanark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 04:15:23