当前位置: 首页 > 面试题库 >

Struts从2.5.3升级到2.5.5

叶鸿振
2023-03-14
问题内容

我试图从struts 2版本升级2.5.32.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 &lt;forEach&gt;
    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。任何意见。


问题答案:

令人惊讶的是parameters,我在标签中使用的名称与struts 2冲突。似乎该版本的struts parameters在上下文中定义了a
,这导致名称冲突。

当我${parameters}在jsp struts中测试时,2.5.3我注意到

当我${parameters}在jsp
struts中测试时,2.5.5我看到org.apache.struts2.dispatcher.HttpParameters

因此,我将may tag属性重命名为params,一切正常!



 类似资料:
  • 我将Struts从2.3.7升级到2.3.33(使用Maven)。当使用版本2.3.7时,我的web应用程序没有出现任何问题,在升级到2.3.33后,当我试图访问包含对服务器的Ajax调用的web页面时,收到以下异常。 我使用maven 3.0.4和Java1.7_079。谁能说出可能出了什么问题吗?

  • 我试图将struts版本从2.3.35升级到2.5.17,但是遇到了如下问题: 我一直在使用本指南迁移到strut版本2.5.17:https://cwiki.apache.org/confluence/display/WW/Struts2.3到2.5迁移 我怀疑这是瓷砖的问题。 我已将所有与struts2-ties-plugin相关的jar升级到2.5.17版,包括struts2-ties-pl

  • 为了帮助大伙儿升级,我们为现在的Apache用户提供了一份重要信息的文档说明。这些只是一些简要说明,你可以从新特性文档或src/CHANGES文件中得到更多信息。 这篇文档仅仅描述了从版本 2.0 到 2.2 的变化,如果你是从1.3版进行升级的,请查考从1.3升级到2.0文档。 编译时配置的改变 编译过程与2.0版本非常相似,你曾经使用过的configure命令行(在安装目录下的build/co

  • 为了帮助大伙儿升级,我们为现在的Apache用户提供了一份重要信息的文档说明。这些只是一些简要说明,你可以从新特性文档或src/CHANGES文件中得到更多信息。 编译时配置的改变 Apache现在使用autoconf和libtool系统来进行安装进程的配置。这个系统用起来很像Apache1.3的APACI系统,但并不相同。 在普通的选择编译模块的基础上,Apache2.0把请求进程的主要部分移到

  • WARNING 本升级指南仅适用于 2.2 版本升级至 2.3 版本,如果你并非 2.2 版本,请查看其他升级指南,Plus 程序不允许跨版本升级! 更新代码 预计耗时: 2 小时 这是你自我操作的步骤,确认将你的 2.2 版本代码升级到 2.3 版本,如果你做过一些自定义修改可能会出现代码冲突,你需要解决。 升级依赖 预计耗时: 3 分钟 进入 Plus 程序目录,执行: composer up

  • WARNING 本升级指南仅适用于 2.1 版本升级至 2.2 版本,如果你并非 2.1 版本,请查看其他升级指南,Plus 程序不允许跨版本升级! 更新代码 预计耗时: 1 小时 这是你自我操作的步骤,确认将你的 2.1 版本代码升级到 2.2 版本,如果你做过一些自定义修改可能会出现代码冲突,你需要解决。 升级依赖 预计耗时: 3 分钟 进入 Plus 程序目录,执行: composer up

  • WARNING 本升级指南仅适用于 2.0 版本升级至 2.1 版本,如果你并非 2.0 版本,请查看其他升级指南,Plus 程序不允许跨版本升级! 更新代码 预计耗时: 1 小时 这是你自我操作的步骤,确认将你的 2.0 版本代码升级到 2.1 版本,如果你做过一些自定义修改可能会出现代码冲突,你需要解决。 升级依赖 预计耗时: 3 分钟 进入 Plus 程序目录,执行: composer up

  • WARNING 请你先确认你的版本已经是 1.9.* 版本,这里的 * 可以是 1.9 的任意修复版本。 更新代码 预计耗时: 1 小时 这是你自我操作的步骤,确认将你的 1.9 版本代码升级到 2.0 版本,如果你做过一些自定义修改可能会出现代码冲突,你需要解决。 升级依赖 预计耗时: 3 分钟 进入 Plus 程序目录,执行: composer update -vvv 1 这个过程根据你的网速