在Spring MVC 3中传递请求参数

时间:2010-11-09 22:50:40

标签: spring spring-mvc httprequest

我只想使用requestparameter发送我的下拉列表的值。就我而言

Kidscalcula_web/start.htm?klasid=myValueHere

我知道这样做的方法,但这样做听起来非常不合理。如果我感到无聊,我可能会写一些jQuery来做一个帖子并发送参数为例。现在真的听起来像是一个非常糟糕的想法,手动创建我的请求字符串,因为Spring负责这一点。那么我怎样才能创建一个简单的表单,只将我的dropdownvalue发送给我的控制器?

只是我无法在任何地方找到一些如此微不足道的东西,你们中的一个人可能很快就会帮助我。我想控制器会像以下一样微不足道:

    @RequestMapping(value = "post")
    public String postIndex(@RequestParam("klasid") String klasid, HttpServletResponse response,
            HttpServletRequest request) {
}

但我真的找不到任何关于如何让JSP向我发送该值的示例。这可能与<form> taglib?

有关

2 个答案:

答案 0 :(得分:12)

<form> taglib通常与表单支持命令对象一起使用,而不是使用单独的@RequestParam参数绑定到控制器。这就是为什么你不会看到任何组合使用的文档示例。

例如,不是拥有@RequestParam("klasid"),而是拥有一个名为klasid的字段的命令类,而Spring会将所有字段绑定在一起:

@RequestMapping(value = "post")
public String postIndex(@ModelAttribute MyCommandClass command) { /../ }

当您考虑表单通常具有多个参数时,这是有道理的,并且使用@RequestParam声明它们变得很麻烦。

话虽如此,你仍然可以这样做 - 任何表单控件都会生成@RequestParam可以绑定的请求参数,但是如果你选择偏离Spring MVC的表单支持命令模式,那么它就很尴尬了。

答案 1 :(得分:4)

您甚至不需要taglib来发送此请求。您可以使用method = "GET"创建最简单的HTML表单(method的默认值):

<form action = "...">
    <select name = "klasid">
        <option value = "value1">Option 1</option>
        <option value = "value2">Option 2</option>
        <option value = "value3">Option 3</option>
    </select>
    <input type = "submit" />
</form>