0

次の問題があります。次のデータを編集しようとすると、HTTP PUT がこの URL でサポートされていないという例外が発生します。これは、ボタンを使用してその行を編集する JSP フォーム側です。

<c:url var="formAction" value="/circuits/${circuit.circuitId}" />
<form:form method="PUT" action="${formAction}">
    <input type="hidden" name="circuitId" value="${circuit.circuitId}" />
    <input type="submit" value="Edit" class="btn btn-primary" />
</form:form>

以下は、を取得するコントローラーメソッドですcircuitId

@RequestMapping(value = "/{circuitId}", method = RequestMethod.PUT)
public String showEditCircuitForm(@PathVariable Integer circuitId, ModelMap model) throws NoSuchRequestHandlingMethodException

ただし、通常の GET メソッドを使用するとすべて正常に動作しますが、問題を引き起こしているのはこの PUT メソッドだけです。必要なすべての依存関係があります。

4

1 に答える 1

2

フォームで公式にサポートされているのはgetとのみです。フォームをサポートするブラウザは知りません。ただし、でサポートされてます。postputAJAX

それとは別に、Java Servlet API のサポートはPUT理想的ではありません。web.xml にフィルターを含める必要がある場合があります。

<filter>
  <filter-name>httpPutFormContentFilter</filter-name>
  <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
</filter>

忘れる前に:リクエストを送信し、post別のフィルターを使用してputリクエストを偽造することができます。

<filter>
  <filter-name>HiddenHttpMethodFilter</filter-name>
  <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>

これを機能させるには、フォームに名前_methodと値を含む隠しフィールドを含める必要がありPUTます。

于 2013-07-04T16:49:39.093 に答える