0

コントローラのメソッドに対して次の@RequestMappingを定義しています。

@RequestMapping(value = "{transactionId}/continue", params = "submitButton=enterApplication")

JSPでは、次のボタンを定義しています。

<button type="submit" name="submitButton" id="button.enterApplication" value="enterApplication">
Enter Application
</button>

最新のブラウザではすべてが正常に機能します。リクエストでは、次のものが送信されます。

submitButton=enterApplication

しかし、IE7(おそらく以前も)では、ブラウザーはvalue属性の代わりにbuttonタグのコンテンツを送信しているように見えます。したがって、この場合、次のように送信されます。

submitButton=Enter+Application

スペースの代わりに「+」記号に注意してください(Fiddlerを使用して、リクエストを検査し、上記のパラメーター/値に「+」が含まれていることを確認しました)。これが私の問題の原因であると確信していますが、どうしたらよいかわかりません。次の@RequestMappingを使用して別のメソッドを追加しようとしました。

@RequestMapping(value = "{transactionId}/continue", params = "submitButton=Enter+Application")

しかし、これはうまくいかないようです。次のエラーが引き続き発生します。

javax.servlet.ServletException: No adapter for handler [...]: Does your handler implement a supported interface like Controller?

リクエストで送信されているものを@RequestMappingで定義されたパラメーターと比較するために、Springが実行しているロジックを判別する方法はありますか?スペースまたは「+」文字の比較に問題があるはずだと思います。

*注:問題は必ずしもプラス文字であるとは限りません-それは私の最初の考えでした。Springがハンドラーをどのように決定するかを理解できれば、なぜそれが一致しないのかを理解できるかもしれません。

4

3 に答える 3

0

Sotirios Delimanolis の答えは正しかった。なぜそれが最初に機能しなかったのか、私には完全にはわかりません。

要約すると、次の RequestMapping は正しいです。

@RequestMapping(value = "{transactionId}/continue", params = "submitButton=Enter Application")

また、古いブラウザーをサポートし、異なる RequestMappings で複数のメソッドを作成する必要がないようにするために、value 属性を削除し、ボタン タグのコンテンツに依存することにしました。

ということで、ボタンはこんな感じになりました。

<button type="submit" name="submitButton" id="button.enterApplication">
Enter Application
</button>
于 2013-03-26T17:41:30.613 に答える
0

送信ボタンの値を使用してパラメーターを送信する代わりに、フォームに隠しフィールドを配置するだけです。value="enterApplication"送信ボタンから削除し、フォームに次のようなものを配置します。

<input type="hidden" value="enterApplication" name="myParameterName"/>

次に、パラメーターをコントローラー メソッド シグネチャに追加します。

@RequestMapping(value = "{transactionId}/continue")
public void myControllerMethod(@RequestParam String myParameterName)
....
于 2013-03-20T18:55:02.623 に答える
0

paramValue.equals(request.getParameter(paramName))「paramName=paramValue」形式にa を使用します。

于 2013-03-20T20:54:47.057 に答える