Spring MVC(私は3.0.2で作業しています)では、2つのHTTPメソッドが常に(またはほとんど私が思うように)予約されています(つまり、適切なハンドラーでマップされています)。
@RequestMapping(method=RequestMethod.GET)
public String showForm(Map model)
{
//Usually retrieve data from the database when the page is loaded.
return "admin_side/Temp";
}
上記のメソッドは、GET要求が行われたときに呼び出されます。
@RequestMapping(method=RequestMethod.POST)
public String onSubmit(@ModelAttribute("tempBean") @Valid TempBean tempBean, BindingResult error, Map model, HttpServletRequest request, HttpServletResponse response)
{
//Perform some basic operations with the database like insert, update or delete when the form is submitted (by clicking a submit button or so).
return "admin_side/Temp";
}
上記のメソッドは、POSTリクエストが行われたときに呼び出されます。@RequestMapping(value="admin_side/Temp")
Springコントローラーが注釈で指定されていると仮定します。
さて、Ajaxを使用する必要があり、前述の方法とは異なる機能を実行する必要がある場合はどうなりますか?すでにハンドラーがマップされているため、GETメソッドでもPOSTメソッドでも別のメソッドを処理できません(HTTPメソッドのGETとPOSTは、それぞれshowForm()
とonSubmit()
メソッドを処理するために予約されています)。
デモンストレーションのために、私は次のようなAjaxmethod=RequestMethod.PUT
でのアプローチを使用しました
@RequestMapping(method=RequestMethod.PUT)
public @ResponseBody String getStateList(@ModelAttribute("tempBean") @Valid TempBean tempBean, BindingResult error, HttpServletRequest request, HttpServletResponse response)
{
return "Message";
}
意図したとおりに機能しましたが、最善の解決策ではないと感じました。そのようなシナリオがある場合、Spring MVCでAjaxリクエストをどのように処理しますか(実際、私にとってはごく普通のようです)?私は(常に)使用する必要がありますRequestMethod.PUT
か?(または、SpringのAjaxに最適なHTTPメソッドは何ですか?)
同じコントローラーで同じHTTPメソッドを使用して複数のメソッドをマップする方法はありますか(明白な答えはnoである必要があります)?繰り返しますが、Spring MVCでAjaxを使用する必要がある場合、どのアプローチを使用しますか?あなたが私の言いたいことに従うことを願っています!私の英語はまだ初期段階なので、表現するのはかなり難しいです。