Spring Security 4升级后的java.lang.NoSuchMethodError org.springframework.web.servlet.tags.form.InputTag.setDisabled

时间:2016-01-22 17:21:36

标签: java spring tomcat spring-security upgrade

我们将申请从spring security 4升级为spring security 3

除了使用只读或禁用属性的输入标记访问视图时,它才能正常工作。

尝试显示以下某个违规表单时,会抛出以下例外情况:

  

[org.apache.jasper.JasperException:javax.servlet.ServletException:java.lang.NoSuchMethodError:org.springframework.web.servlet.tags.form.InputTag.setDisabled(Ljava / lang / String;)V] with根本原因   java.lang.NoSuchMethodError:org.springframework.web.servlet.tags.form.InputTag.setDisabled(Ljava / lang / String;)

我无法在开发环境中重现该问题。

依赖关系由Maven管理。 .war部署在运行于2台服务器的集群上的 Tomcat 7 上。

有人建议它是类路径问题,可能还有 Spring 3 类仍然在不同的环境中以不同的顺序加载。但据我所知,我们的pom文件没有引用任何 Spring 3 罐子。

之前有没有人遇到过这个或类似事情并设法解决它?

5 个答案:

答案 0 :(得分:2)

我怀疑你的tomcat安装已将已编译的jsps缓存在其工作目录中,升级可能需要重新编译jsps才能获得Spring 4的更改。

尝试停止tomcat,删除工作目录并重新启动以查看是否能解决问题。

答案 1 :(得分:1)

似乎你的应用程序使用旧的spring框架,因为在spring f / w 4中没有setDisable(String)方法。它有setDisable(boolean)。参见spring f / w 4 doc http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/tags/form/AbstractHtmlInputElementTag.html#setDisabled-boolean-

请检查您的pom .xml,如果没问题,请执行mvn clean。

答案 2 :(得分:0)

我遇到了同样的问题,我通过查看JSP中的JSTL代码修复了它。您是否设置了true或false以外的值?我将属性值设置为“readonly”(字符串!)。但这已不再允许。只能使用“true”或“false”。请参阅下面的更新:

<c:choose>
    <c:when test="${canEdit eq 'true'}">
        <c:set var="isTabReadonly" value="false" />
   </c:when>
   <c:otherwise>
       <c:set var="isTabReadonly" value="readonly" /> // Change to "true"
   </c:otherwise>
</c:choose>

答案 3 :(得分:0)

如果您使用Jenkins,请在构建之前完全删除构建目录的内容。特别是如果你像我们那样做了重大改变。不要通过詹金斯信任Maven总是说实话。

从Java 1.7上的Spring 3.2升级到Java 1.8上的Spring 4.3.x后,我们遇到了同样的问题。在我们的本地环境(WebSphere Liberty Profile 17,jsp-2.2,servlet-3.0)中,一切都运行良好,但在远程环境中的JSP(WebSphere 8.5.5.9 Base,jsp-2.2,servlet-3.0)中出现此错误失败。 / p>

答案 4 :(得分:0)

您可以更改:从readonly="true"readonly="${true}"并假设所有项目。