2

JSP に次のコードがあります。

<form:form commandName="Recipient" name="mailForm" 
           action="MailSuccess.jsp" method="get">
    <form:input path="toAddress"/>
    <form:input path="subject"/>
    <input type="submit" value="Send"/>
</form:form>

このエラーが発生しています:

org.apache.jasper.JasperException: /SendMail.jsp(12,0) form:form タグは、動的属性を受け入れることを宣言していますが、必要なインターフェースを実装していません

私の推測では、いくつかの JAR ファイルが欠落していると思われますが、よくわかりません。なぜこれが起こるのかについて、誰かが情報を提供できますか?

4

1 に答える 1

6

実際にいくつかの JAR ファイルが欠落しているか、それらを持っていてもバージョンが間違っている可能性があります (タグ ハンドラーを含む Spring jar が間違っているか、jsp-api.jarアプリケーションに誤って含まれている可能性さえあると思います)。

Spring Form タグ ハンドラーが無効であると見なされるため、サーブレット コンテナーからその例外が発生します。

JSP 2.0 では、タグ ハンドラに新しい機能が追加され、動的な属性を取得できるようになりました。そのためには、宣言を使用して TLD ファイルで指定する必要が<dynamic-attributes>true</dynamic-attributes>あり、タグ ハンドラー クラスはDynamicAttributesインターフェイスを実装する必要があります。

org.springframework.web.servlet.tags.form.FormTag例外から、アプリケーションが JSP 2.0 Spring TLD ファイルを、クラスを含む古いバージョンの JAR と組み合わせてロードした可能性があります。

使用しているSpringバージョンについて言及していません。3ですか?Maven を使用してアプリケーションの依存関係を取得している場合に発生する可能性のある Spring 2 JAR をロードした可能性があります。バージョン間でクラスが変更されたため、これは理にかなっています。したがって、これを最初に確認します。

FormTag バージョン 2 :実装されているすべてのインターフェイス: Serializable、IterationTag、JspTag、Tag、TryCatchFinally、EditorAwareTag。

FormTag バージョン 3 :実装されているすべてのインターフェイス: Serializable、 DynamicAttributes、IterationTag、JspTag、Tag、TryCatchFinally、EditorAwareTag。

于 2012-11-30T19:02:03.647 に答える