我尝试从struts 2版本2.5.3
升级到2.5.5
...我遇到了一个奇怪的问题。
我们有以下标签:
<%@tag description="Rensders an ajax link" pageEncoding="UTF-8"%>
<%@attribute name="parameters" description="list of parameters that put to this link"
type="java.util.HashMap" required="false"%>
..............
<c:forEach items="${parameters}" var="p">
<c:param name="${p.key}" value="${p.value}"/>
</c:forEach>
以上代码在升级时抛出异常!
Caused by: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>
at org.apache.taglibs.standard.tag.common.core.ForEachSupport.toForEachIterator(ForEachSupport.java:274)
at org.apache.taglibs.standard.tag.common.core.ForEachSupport.supportedTypeForEachIterator(ForEachSupport.java:238)
at org.apache.taglibs.standard.tag.common.core.ForEachSupport.prepare(ForEachSupport.java:155)
at javax.servlet.jsp.jstl.core.LoopTagSupport.doStartTag(LoopTagSupport.java:256)
at org.apache.jsp.tag.web.html.link_tag._jspx_meth_c_005fforEach_005f0(link_tag.java:439)
at org.apache.jsp.tag.web.html.link_tag._jspx_meth_c_005furl_005f0(link_tag.java:405)
at org.apache.jsp.tag.web.html.link_tag._jspx_meth_sec_005fauthorize_005f0(link_tag.java:366)
at org.apache.jsp.tag.web.html.link_tag.doTag(link_tag.java:230)
如您所见,标签是JSTL标签而非struts!
我使用Tomcat 8.0。 任何评论。
答案 0 :(得分:2)
令人惊讶的是,我在我的标记中使用的parameters
名称与struts 2存在冲突。看起来这个版本的struts在上下文中定义了一个parameters
,这使得名称冲突。 / p>
当我在jsp struts ${parameters}
中测试2.5.3
时,我看到了
当我在jsp struts ${parameters}
中测试2.5.5
时,我看到org.apache.struts2.dispatcher.HttpParameters
所以我将may属性重命名为params
,一切都很好!