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)
关键修改点说明
- 移除代码逻辑中的
${}:- 把
if(${so_ruolop} == 'SI')改成if(so_ruolop == 'SI'),所有变量直接引用,不再用${}包裹。
- 把
- 修复语法错误:
- 闭合
println "${var}的双引号,改为println var或println "${var}"。 - 初始化
create_table_ambito1中的t变量,从def t = t+table改为def t = table。 - 修正
println(${t}为println t。
- 闭合
- 优化函数调用:
- 移除冗余的
create_table_ambito1()调用,直接将返回值赋值给html变量。
- 移除冗余的
- 简化字符串拼接:
- 使用
+=替代var = var+,让代码更简洁。 - 字符串插值直接用
"${nomeriga}",提升可读性。
- 使用
内容的提问来源于stack exchange,提问作者Zanark
相关产品推荐
相关产品推荐

