0

我在配置 spring MVC 以在正确的控制器中处理表单 POST 数据时遇到问题。我有一个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上找到。以下是重要文件:表单视图控制器(该类是一个多控制器,因为我不想为每个操作创建单独的文件)和servlet 配置

不知道这是否重要,但我正在为视图层使用图块(并且在tiles.xml中使用了逻辑视图名称)。

此外,我并不完全了解 spring 路由是如何工作的。到目前为止,我在 servlet 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 {

看看有没有收到。

另一种方式,是从请求对象中读取参数;

@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: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 回答