在Spring MVC 3中传递请求参数


问题内容

我只想通过请求参数发送下拉列表的值。就我而言

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 是否可能?


问题答案:

<form>标签库通常与形背衬命令对象使用,而不是被结合到使用单独的控制器@RequestParam参数。这就是为什么您不会看到该组合使用的任何文档示例的原因。

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

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

当您认为表单通常具有多个参数,并且使用来声明所有参数时,这很有意义 @RequestParam

话虽如此,您仍然可以执行此操作-任何表单控件都将生成@RequestParam可以绑定到的请求参数 ,但是如果您选择偏离Spring
MVC的表单支持命令模式,那么它会很尴尬。