我如何配置Model/Command类绑定到特定的请求参数?
例如,我有以下方法:
@RequestMappint("/success")
ModelAndView success(@ModelAttribute SomeCommand command) {
// process
}
Run Code Online (Sandbox Code Playgroud)
和命令:
class SomeCommand {
String title
}
Run Code Online (Sandbox Code Playgroud)
/success?title=test当请求参数名称等于命令属性名称时,它适用于请求.
但是,如果我需要映射一些不同的名称呢?例如,如果请求如下:/success?sk_title=test.
我如何将请求参数映射sk_title到title我的命令字段?
这个命令有一堆参数,并且由几种不同的方法使用(它是与其他遗留系统的集成),因此为每个RequestMapped方法将所有这些参数作为@RequestParam获取是很多工作并且需要太多的复制/粘贴工作,这带来了很多错误和不受支持的代码.
我无法控制输入参数名称,它有非常奇怪的名称,如'sk_yt_saf_amount',这就是为什么我试图将它绑定到更友好的属性名称.
PS我在那里使用单词'command'作为输入数据,以区别于Model和ModelAndView概念.
@RequestMapping("/success")
ModelAndView success(@RequestParam("sk_title") String title) {
SomeCommand command = new SomeCommand();
command.setTitle(title);
model.addAttribute("title", command);
//rest of code here
}
class SomeCommand {
String title
public void setTitle(String title){
this.title = title;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您可以控制视图上的名称属性,则可以使事情变得更简单。只需更改名称属性以匹配 SomeCommand 对象字段,spring 就会自动绑定它们。 spring 3.0如何绑定请求参数? 您仍然需要将命令添加到模型中,并且此答案假设您使用的是 Spring 3 或更高版本。我认为 spring 可能还需要 SomeCommand 对象的字段上的 getter 和 setter。
@RequestMapping
public ModelAndView success(SomeCommand someCommand) {
model.addAttribute("someCommand", someCommand);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4028 次 |
| 最近记录: |