0

正しいコントローラーでフォーム POST データを処理するように spring MVC を構成する際に問題があります。addデータベースに新しいレコードを追加するアクションがあります。

フォームが送信された後、404 エラー ( http://localhost:8084/lyricsBase/song/submit.html) が表示されるので、フォーム送信のルーティングに問題があると思います。

これは私のコントローラコードです:

public class SongController extends MultiActionController {

    [...]
    @RequestMapping(value = "/song/submit.html", method = RequestMethod.POST)
    public ModelAndView submit(@RequestParam("song") Song song) throws Exception {
        HashMap model = new HashMap();
        model.put("song", song);
        // or do something better here...
        return new ModelAndView("t.edit", model);
    }

これはビュー フォーム タグです。

<form:form method="POST" commandName="song" action="submit.html">

私のアプリケーションのコードはgithubで入手できます。重要なファイルは次のとおりです。フォームビューコントローラー(アクションごとに個別のファイルを作成したくないため、クラスはマルチコントローラーです) およびサーブレット構成

それが問題かどうかはわかりませんが、ビュー レイヤーにタイルを使用しています (また、論理ビュー名はtiles.xmlで使用されます)。

その上、私はスプリング ルーティングがどのように機能するかを完全には理解していません。今まではサーブレットxmlでマッピングを定義していたのですが、それが良いアプローチかどうかわかりません...

4

3 に答える 3

1

歌の投稿価値は?Spring が投稿されたデータをオブジェクト/エンティティに転写または逆シリアル化するかどうかはわかりません。変更してみてください。

@RequestMapping(value = "/song/submit.html", method = RequestMethod.POST)
public ModelAndView submit(@RequestParam("song") Song song) throws Exception {

の中へ

@RequestMapping(value = "/song/submit.html", method = RequestMethod.POST)
public ModelAndView submit(@RequestParam("song") String song) throws Exception {

それが取り上げられたかどうかを確認します。

もう 1 つの方法は、要求オブジェクトからパラメーターを読み取ることです。

@RequestMapping(value = "/song/submit.html", method = RequestMethod.POST)
public ModelAndView submit(HttpServletRequest request) throws Exception {

Object song = request.getParameter("song");

グル!

于 2013-03-07T08:17:07.387 に答える
0

アプリケーションのURLが次の場合:

http://localhost:8084/lyricsBase/song/submit.html

リクエストのマッピングは次のようになります(マッピングの最初の「/」を削除):

@RequestMapping(value = "song/submit.html", method = RequestMethod.POST)
public ModelAndView submit(@ModelAttribute("song") Song song) throws Exception {
}

また、jspのフォームタグは次のようになります。

<form:form method="POST" commandName="song" action="song/submit.html">
于 2013-03-07T06:03:18.603 に答える
0

これを試して、に変更@RequestParam("song")してください@RequestBody

于 2013-03-07T05:49:07.463 に答える