java - 如何将多个参数从 View 传递到 Controller 的方法

标签 java jsp spring-mvc

你能告诉我如何以最方便的方式将多个参数从 View 传递到 Controller 的函数吗?

JSP View :

<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>

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

@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)。主题对象的实例可以在 View 中访问,主题 ID 是响应的一部分。你能给我一个想法,我该如何处理这个问题吗?

最佳答案

有了topicId就能得到主题模型吗?它就在你的路上。 您可以通过在方法参数中添加 @PathVariable 注解来获取它。

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

关于java - 如何将多个参数从 View 传递到 Controller 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11940470/

相关文章:

java - 升级 Fedora 24,Gradle 状态文本不显示

javascript - .js 代码中给出的 document.location() 函数在 Internet Explorer 中工作正常,但在 Firefox 中不起作用

java - 在单选按钮上渲染列表选择设计

java - Spring在jsp中启用 Controller 页面渲染的问题

java - Spring MVC 什么时候不需要 @RequestParam 注解?

Java 泛型比较器

java - 如何使用java.awt.Robot发送包含大写字母和小写字母以及特殊字符的字符串?

java - Mybatis xml resultMap 存在集合和关联问题

java - <html> 和 <html :html> element in JSP? 之间有什么区别

html - 验证 JSP 和 HTML 表单,服务器端或客户端,或两者?