如何将几个参数从视图传递到控制器方法

时间:2012-08-13 18:52:18

标签: java jsp spring-mvc

您能告诉我如何以最方便的方式将几个参数从视图传递到控制器的功能吗?

JSP视图:

<h2>${topic.getName()}</h2>
<h3>${topic.getText()}</h2>

<form:form method="post" commandName="newComment">
    <fieldset>
        <div class="editor-label">
            <td><form:label path="text">Input comment</form:label></td>
        </div>

        <div class="textarea">
            <form:textarea path="text" />
        </div>

        <p>
            <input type="submit" value="Comment" />
        </p>
    </fieldset>
</form:form>

如您所见,我们有主题 newComent 属性,它们代表主题和评论实体。
  这是一个控制器:

@RequestMapping(value = "/addComment/{topicId}", method = RequestMethod.POST)
public String saveComment(@ModelAttribute("newComment")Comment comment, BindingResult result, Model model){

    validate(comment, result);
    if (result.hasErrors() )
        {
            return "//";
        }
        return "redirect:details/";
    }
}

评论实体被识别为正常,但我也需要一个Topic对象的实例(或它的ID)。可以在视图中访问主题对象的实例,主题ID是响应的一部分。你能告诉我如何处理这个问题吗?

1 个答案:

答案 0 :(得分:1)

如果您拥有topicId,可以获得主题模型吗?它在你的道路上。 您可以通过在方法参数中添加@PathVariable注释来获取它。

public String saveComment(@PathVariable String topicId, @ModelAttribute("newComment")Comment comment, BindingResult result, Model model){