在JAVA中使用Velocity模板渲染,宏函数的部分,未被渲染
模板:宏函数ifExistString作用obj对象中存在目标key则拼接指定子串
#set($bizCode=$resp.bizOrderResult)
#set($bizDesc=$resp.bizOrderResult)
#set($oprTime=$methods.getFormatTime("yyyyMMddHHmmss"))
{"IDType":"$req.IDType","IDValue":"$req.IDValue","OprNumb":"$req.OprNumb","BizOrderResult":"$bizCode","ResultDesc":"$bizDesc","OprTime":"$oprTime"#ifExistString($req "smsVerify")}
#macro(ifExistString $obj $key)#if($obj.containsKey($key)),"$key":"$obj.getString($key)"#end#end
渲染后结果:
{"IDType":"01","IDValue":"12345678","OprNumb":"2023091414515","BizOrderResult":"0000","ResultDesc":"成功","OprTime":"20230914145243"({"Channel":"22","OprTime":"20230914145240","BizVersion":"1.0.0","EfftTime":"20230914145150","BizType":"1031","OprNumb":"2023091414515","IDValue":"12345678","IDType":"01","ExtendInfo":[{"InfoCode":"Goods","InfoValue":"2023999500"}],"OprCode":"01"} "smsVerification")}
#ifExistString($req "smsVerify")渲染时未成功调用宏函数,直接被渲染为:($req "smsVerify")
检查了代码包和配置:相同的代码逻辑、相同的模板,测试环境可正常渲染,正式环境会出现上面的问题。
检查了两个环境均使用JDK1.8、velocity-engine-core-2.3.jar
没什么思路了,还可能是什么原因?
引用 皆我百晓生 小程序回复内容作答:
可能原因:
解决方案: