java如何在SpringMVC3.1中保存状态?
我不知道它是否是“保存状态”这个词,但如果我的控制器中有此方法:
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model, HttpServletRequest request) {
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
model.addAttribute("email", new Email());
model.addAttribute("imgBg", getRandomBg(request.getRemoteHost()));
Map sexoOpts = new HashMap();
sexoOpts.put("M", "homem");
sexoOpts.put("F", "mulher");
Map sexoOpts2 = new HashMap();
sexoOpts2.put("M", "Busco por homens");
sexoOpts2.put("F", "Busco por mulheres");
model.addAttribute("sexoList1", sexoOpts);
model.addAttribute("sexoList2", sexoOpts2);
return "index";
}
另一种方法是:
@RequestMapping(value = "/save-email", method = RequestMethod.POST)
public String doSaveEmail(@Valid @ModelAttribute("email") Email email,BindingResult result, Model model, HttpServletRequest request){
model.addAttribute("imgBg", getRandomBg(request.getLocalAddr()));
Map sexoOpts = new HashMap();
sexoOpts.put("M", "homem");
sexoOpts.put("F", "mulher");
Map sexoOpts2 = new HashMap();
sexoOpts2.put("M", "Busco por homens");
sexoOpts2.put("F", "Busco por mulheres");
model.addAttribute("sexoList1", sexoOpts);
model.addAttribute("sexoList2", sexoOpts2);
if (result.hasErrors()){
return "index";
}
Date date = new Date();
email.setCreationDate(date);
boolean saved = false;
try{
saved = emailBo.saveEmail(email);
}catch(Exception e){
e.printStackTrace();
}
model.addAttribute("email", new Email());
if (saved){
model.addAttribute("saveStatus", "ok");
}else{
model.addAttribute("saveStatus", "false");
}
return "index";
}
我必须重新创建hashmap,以便每次都放置性感选项,因为它将再次返回到同一页面(index.jsp)?当我从家里回来保存电子邮件时,没有办法保存这个吗
# 1 楼答案
“spring方式”是将这两个HashMap声明为实例变量,并将它们连接到应用程序上下文(DI)中——可能将映射存储在属性文件中
# 2 楼答案
我会将
Map
保存为常量,这样它就存在于方法之外,但仍然可以从内部引用