我想转换这个SimpleFormController以使用Spring MVC 2.5中引入的注释支持
public class PriceIncreaseFormController extends SimpleFormController {
ProductManager productManager = new ProductManager();
@Override
public ModelAndView onSubmit(Object command)
throws ServletException {
int increase = ((PriceIncrease) command).getPercentage();
productManager.increasePrice(increase);
return new ModelAndView(new RedirectView(getSuccessView()));
}
@Override
protected Object formBackingObject(HttpServletRequest request)
throws ServletException {
PriceIncrease priceIncrease = new PriceIncrease();
priceIncrease.setPercentage(20);
return priceIncrease;
}
}
Spring Config
基本上,我想用Java类中的注释替换/priceincrease.htm bean的所有XML配置.这是可能的,如果是这样,我应该使用哪些相应的注释?
谢谢,
唐
解决方法:
它看起来像下面这样,虽然它是否有效但取决于你的配置(查看解析器等).我还应该注意到,有大约80亿个有效的方法来编写这个东西.有关精神错乱的概述,请参阅Spring文档13.11.4 “Supported handler method arguments and return types”.另请注意,您可以自动装配验证器
@Controller
@RequestMapping("/priceincrease.htm")
public class PriceIncreaseFormController {
ProductManager productManager;
@Autowired
public PriceIncreaseFormController(ProductManager productManager) {
this.productManager = productManager;
}
// note: this method does not have to be called onSubmit
@RequestMapping(method = RequestMethod.POST)
public String onSubmit(@ModelAttribute("priceIncrease") PriceIncrease priceIncrease, BindingResult result, SessionStatus status {
new PriceIncreaseValidator().validate(priceIncrease, result);
if (result.hasErrors()) {
return "priceincrease";
}
else {
int increase = priceIncrease.getPercentage();
productManager.increasePrice(increase);
status.setComplete();
return "redirect:hello.htm";
}
}
// note: this method does not have to be called setupForm
@RequestMapping(method = RequestMethod.GET)
public String setupForm(Model model) {
PriceIncrease priceIncrease = new PriceIncrease();
priceIncrease.setPercentage(20);
model.addAttribute("priceIncrease", priceIncrease);
return "priceincrease";
}
}
标签:java,spring-mvc,spring,annotations
来源: https://codeday.me/bug/20190607/1192942.html