gpt4 book ai didi

java - Spring更新到Java 7时动态属性无效

转载 作者:太空宇宙 更新时间:2023-11-04 06:59:30 24 4
gpt4 key购买 nike

我负责一个相当老的网站,最初使用 Java 5 编译,现在使用 Java 6。我使用的是 Spring 3.1。

我正在尝试从 Java 6/Tomcat 6 更新到 Java 7/Tomcat 7,但在表单标签方面遇到很多问题。

对于此代码:

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>    
...
<form:textarea path="myPath" placeholder="hello world" id="myId" rows="1" />

我收到这个错误:

Attribute placeholder invalid for tag textarea according to TLD

看来我在更新 Java 之前使用的很多属性都不再起作用了。你知道为什么吗?谢谢!

最佳答案

看起来 WAR 意外包含了 TLD 的多个版本,并且在 Tomcat 6 中找到了正确的版本,但在 Tomcat 7 上却加载了错误的版本。

如果 WEB-INF/lib 中存在同一 jar 的两个不同版本,则无法预测将选择哪一个,结果取决于类加载器实现细节,因此不同的 Tomcat 版本可能会产生不同的结果。

要验证这一点,请尝试在 IDE 中查找文件 spring.schemas 的多个版本。这些文件包含 url(例如 http://www.springframework.org/tags/form)与同一 jar 中附带的 XSD/TLD 之间的映射。

此机制适用于未在线发布的 XSD/TLD,例如本例中的 url,如果将 url 粘贴到浏览器,则该文件不存在。

在这种情况下,应该有两个 spring.schemas 都提到了 url http://www.springframework.org/tags/form。删除 XSD/TLD 版本错误的那个,它应该在两个 Tomcat 版本中都能正常工作。

关于java - Spring更新到Java 7时动态属性无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22306591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com