更新到Java 7时,Spring的动态属性无效

更新到Java 7时,Spring的动态属性无效,java,spring,tomcat7,java-7,Java,Spring,Tomcat7,Java 7,我负责一个很老的网站,最初是用Java5编译的,现在是Java6。我正在使用Spring3.1 我正在尝试从Java6/Tomcat6更新到Java7/Tomcat7,关于表单标记我有很多问题 对于此代码: <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> ... <form:textarea path="myPath" placeholder="hello world"

我负责一个很老的网站,最初是用Java5编译的,现在是Java6。我正在使用Spring3.1

我正在尝试从Java6/Tomcat6更新到Java7/Tomcat7,关于表单标记我有很多问题

对于此代码:

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

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

看起来WAR意外地包含了几个版本的TLD,在Tomcat 6中找到了正确的版本,但在Tomcat 7中加载了错误的版本

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

要验证这一点,请尝试通过文件
spring.schemas
的多个版本查看IDE。这些文件包含url之间的映射,例如
http://www.springframework.org/tags/form
和XSD/TLD在同一个jar中提供

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


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

非常感谢!我的构建路径中有spring.jar(v2.5)和其他spring-jar(v3.0)。我刚把旧的拿走,它就起作用了
Attribute placeholder invalid for tag textarea according to TLD