前几天,一个系统从resin 2升级到resin3得时候遇到的问题,如下:
javax.servlet.jsp.JspException: An error occurred while evaluating custom action attribute "value" with value "${title.ID}": Unable to find a value for "ID" in object of class "java.lang.String" using operator "." (null) at org.apache.taglibs.standard.lang.jstl.Evaluator.evaluate(Evaluator.java:109) at org.apache.taglibs.standard.lang.jstl.Evaluator.evaluate(Evaluator.java:129) at org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager.evaluate(ExpressionEvaluatorManager.java:75) at org.apache.taglibs.standard.tag.el.core.ExpressionUtil.evalNotNull(ExpressionUtil.java:48) at org.apache.taglibs.standard.tag.el.core.ParamTag.evaluateExpressions(ParamTag.java:108) ........(下略)
找了半天才发现是resin3与jstl之间的问题
需要将resin自带的禁用。如下
将resin.conf文件的:
<servlet servlet-name="directory"
servlet-class="com.caucho.servlets.DirectoryServlet"/>
改成:
<servlet servlet-name="directory"
servlet-class="com.caucho.servlets.DirectoryServlet">
<init enable="false"/>
</servlet>
在resin.conf文件中添加你的webapp的配置,注意要加上<jsp fast-jstl="false"/>
<web-app id="/alumni" document-directory="webapps/alumni">
<jsp fast-jstl="false"/>
</web-app>
在jsp引用中 把
<%@ taglib prefix='c' uri='http://java.sun.com/jstl/core' %>
改成
<%@ taglib prefix='c' uri='http://java.sun.com/jsp/jstl/core' %>
问题即解决