Pra*_*ant 4 java parameters controller spring-mvc parameter-passing
在我的 Spring Web 应用程序中:
@RequestMapping(value = NEW)
public String addProduct(@RequestParam String name, @RequestParam(required = false) String description,
@RequestParam String price, @RequestParam String company, ModelMap model,
@RequestParam(required = false) String volume, @RequestParam(required = false) String weight) {
try {
productManagementService.addNewProduct(name, description, company, price, volume, weight);
model.addAttribute("confirm", PRODUCT_ADDED);
return FORM_PAGE;
} catch (NumberFormatException e) {
logger.log(Level.SEVERE, INVALID_VALUE);
model.addAttribute("error", INVALID_VALUE);
return FORM_PAGE;
} catch (InvalidUserInputException e) {
logger.log(Level.SEVERE, e.getMessage());
model.addAttribute("error", e.getMessage());
return FORM_PAGE;
}
}
Run Code Online (Sandbox Code Playgroud)
减少/绑定参数总数的可能方法是什么。
创建表单类即
class MyForm{
String name;
String price;
String description;
...
// Getters and setters included
}
Run Code Online (Sandbox Code Playgroud)
并且喜欢
@RequestMapping(value = NEW)
public String addProduct(@ModelAttribute MyForm myForm)
Run Code Online (Sandbox Code Playgroud)
MyForm
请求参数的实例化和绑定到其属性以及添加到 ModelMap 是由 spring 在幕后完成的。
来源:Spring 文档
方法参数上的 @ModelAttribute 表示应该从模型中检索参数。如果模型中不存在该参数,则应首先实例化该参数,然后将其添加到模型中。一旦出现在模型中,参数的字段应该从具有匹配名称的所有请求参数中填充。这在 Spring MVC 中称为数据绑定,这是一种非常有用的机制,可以使您不必单独解析每个表单字段。
归档时间: |
|
查看次数: |
2731 次 |
最近记录: |