应用部署时,出现jsp编译错误,找不到函数'isEmpty()'所映射的方法?
由 何 善才 在 超过 3 年 之前添加
错误信息:
原因分析:
加载的那些tld文件里面有定义这个方法,应用类里面又找不到这个定义的方法
查看jsp编译后的class文件,isEmpty()方法。
查看tid文件 Myfunctions.tid文件,找到定义的方法:
<function>
<name>isNull</name>
<function-class>com.bamboocloud.fw.jstl.taglibs.MyFunctions</function-class>
<function-signature>boolean isNull(java.lang.Object)</function-signature>
<example>${mfn:isNull(object)}</example>
</function>
<function>
<name>isEmpty</name>
<function-class>com.bamboocloud.fw.jstl.taglibs.MyFunctions</function-class>
<function-signature>boolean isEmpty(java.lang.String)</function-signature>
<example>${mfn:isEmpty(string)}</example>
</function>
<function>
<name>toJson</name>
<function-class>com.bamboocloud.fw.jstl.taglibs.MyFunctions</function-class>
<function-signature>java.lang.String toJson(java.lang.Object)</function-signature>
<example>${mfn:toJson(object)}</example>
</function>
对比可见,jar中定义的isEmpty()方法和tid定义的isEmpty()方法不一致,导致jsp编译错误。
解决方案:
jar中方法和tid方法保持一直(参数、返回值等)
tid文件中的方法:
java代码中的方法:
修改tid文件中的方法: