form:form标签声明它接受动态属性但不实现所需的接口

我的JSP中有这个代码:

我收到此错误:

org.apache.jasper.JasperException:/SendMail.jsp(12,0)form:form标签声明它接受动态属性但没有实现所需的接口

我的猜测是我错过了一些JAR文件,但我不确定。 任何人都可以提供一些可能发生这种情况的信息吗

你确实错过了一些JAR文件,或者你有它们但版本错误(我认为包含标签处理程序的Spring jar有错误,甚至可能在你的应用程序中错误地包含了jsp-api.jar )。

您从servlet容器中获取该exception,因为它认为Spring Form标记处理程序无效。

在JSP 2.0中,为标记处理程序添加了一个新function,允许它们采用动态属性 。 为此,您必须使用true声明在TLD文件中指定它,并且标记处理程序类必须实现DynamicAttributes接口。

从例外情况来看,您的应用程序可能会加载一个JSP 2.0 Spring TLD文件,该文件与包含org.springframework.web.servlet.tags.form.FormTag类的旧版JAR相结合。

你没有提到你正在使用的Spring版本。 是3吗? 也许它加载了Spring 2 JAR,如果您使用Maven来获取应用程序依赖项,可能会发生这种情况。 这是有道理的,因为类之间的类发生了变化,所以这将是我要检查的第一件事

FormTag版本2 :所有已实现的接口:Serializable,IterationTag,JspTag,Tag,TryCatchFinally,EditorAwareTag。

FormTag版本3 :所有已实现的接口:Serializable, DynamicAttributes ,IterationTag,JspTag,Tag,TryCatchFinally,EditorAwareTag。