【发布时间】:2011-11-06 10:35:14
【问题描述】:
如何配置模型/命令类以绑定到特定的请求参数?
例如我有以下方法:
@RequestMappint("/success")
ModelAndView success(@ModelAttribute SomeCommand command) {
// process
}
和命令:
class SomeCommand {
String title
}
当请求参数名称等于命令属性名称时,它适用于像 /success?title=test 这样的请求。
但是如果我需要映射一些不同的名称怎么办?例如,如果请求像:/success?sk_title=test。
如何将请求参数sk_title 映射到命令的title 字段?
这个命令有一堆参数,并被几种不同的方法使用(它是与其他遗留系统的集成),所以将所有这些参数作为@RequestParam因为每个 RequestMapped 方法都需要大量的工作,并且需要太多的复制/粘贴工作,这会带来很多错误和不支持的代码。
我对输入参数名称无法控制,它的名称非常奇怪,例如“sk_yt_saf_amount”,这就是我尝试将其绑定到更友好的属性名称的原因。
PS 我在那里使用“命令”一词作为输入数据,以将其与 Model 和 ModelAndView 概念区分开来。
【问题讨论】:
-
你不想在这里使用@RequestParam("sk_title") 之类的东西吗?
-
我这里有几十个参数,所以为它们准备一个容器要容易得多。而且它在少数地方/少数具有不同逻辑但相同数据结构的url中使用
-
如果是这种情况,请在您的页面 GET 请求中执行 model.addAttribute("myuser", new MyUser()) 然后在您的 @RequestMapping("/success") 方法中添加 @ModelAttribute (“我的用户”)。在您的 JSP 表单中,使用 spring 表单帮助器标记
-
对不起,我问的是输入参数(POST,如果有意义的话)
-
@IgorArtamonov 你得到答案了吗?