我正在使用Spring Framework在Java中开发Web应用程序。在一个页面上,我让用户选择年份。这是代码:
@Controller
public class MyController {
@RequestMapping(value = "/pick_year", method = RequestMethod.GET)
public String pickYear(Model model) {
model.addAttribute("yearModel", new YearModel);
return "pick_year";
}
@RequestMapping(value = "/open_close_month_list", method = RequestMethod.POST)
public String processYear(Model model, @ModelAttribute("yearModel") YearModel yearModel) {
int year = yearModel.getYear();
// Processing
}
}
public class YearModel {
private int year;
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
}
这个实现有效,但是我想用一些更简单的方法来获取用户的年份。我认为制作一个特殊模型只是为了得到一个整数并不是很好的方法。
所以,我的问题是:是否有可能以某种方式简化此代码?
感谢您的帮助。 米兰
答案 0 :(得分:4)
通常使用模型将数据从控制器传递到视图,并使用@RequestParam
从控制器中提交的表单中获取数据。这意味着,您的POST方法如下所示:
public String processYear(@RequestParam("year") int year) {
// Processing
}
答案 1 :(得分:1)
确实你只需要存储整数,你不需要创建一个全新的特殊类来保存它
@Controller
public class MyController {
@RequestMapping(value = "/pick_year", method = RequestMethod.GET)
public String pickYear(ModelMap model) {
model.addAttribute("year", 2012);
return "pick_year";
}
@RequestMapping(value = "/open_close_month_list", method = RequestMethod.POST)
public String processYear(@ModelAttribute("year") int year) {
// Processing
}
}
您可以改为(如果可能的话)重新设计您的视图,以便您可以使用@RequestParam
直接将整数传递给方法pickYear
,将其渲染到视图中,以便可以传递此参数以同样的方式进入第二种方法processYear
。
@Controller
public class MyController {
// In the pick_year view hold the model.year in any hidden form so that
// it can get passed to the process year method
@RequestMapping(value = "/pick_year", method = RequestMethod.GET)
public ModelAndView pickYear(@RequestParam("year") int year) {
ModelAndView model = new ModelAndView("pick_year");
model.addAttribute("year", 2012);
return model;
}
@RequestMapping(value = "/open_close_month_list", method = RequestMethod.POST)
public String processYear(@RequestParam("year") int year) {
// Processing
}
}