1

Spring 3.1 で同じコードを正常に実行していました。3.2 にアップグレードしたところ、次の問題が発生しました。

<form:form id="customerLoginForm" commandName="customerLoginForm" action="/login" name="">

3.1 の下では、次の HTML が生成されます。

<form id="customerLoginForm" action="/login" method="post">

生成されるようになりました:

<form id="customerLoginForm" action="/webapp/login" method="post">

ここで、「webapp」は、webapp の Websphere 内のコンテキスト パスです。

上記の例では、/login への GET 要求は成功しますが、不適切なフォーム action="/webapp/login" を返します (フォームは POST を同じ URL に送信します)。そのため、フォームが送信されると、404 の不正な URL エラーが発生します。

3.2で何か変わった?Spring にコンテキストパスを無視するように指示する場所はありますか? すべての絶対パスを相対パス (例: "/login" ではなく "login") に変更することもできますが、webapp には 20 以上のフォームがあるため、変更しないことをお勧めします。

4

1 に答える 1

5

申し訳ありませんが、これはバグではなく、新しい機能です。この jira を参照してください:存在しない場合、フォーム タグは contextPath と servletPath を先頭に追加する必要があります

どうやら 3.2.3 でロールバックされたようです。そのため、最新バージョンにアップグレードするだけで、コードの動作が正常に戻ることがあります

于 2013-07-18T22:59:36.073 に答える