0

我不知道它是否是“保存状态”这个词,但如果我的控制器中有这个方法:

@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";
    }

我每次都必须重新创建哈希图以放置性感选项,因为它会再次回到同一页面(index.jsp)?当我从家里去保存电子邮件并返回时,没有办法保存这个吗?

4

2 回答 2

0

“弹簧方式”是将两个哈希图声明为实例变量并将它们连接到您的应用程序上下文(DI)中 - 可能将映射存储在属性文件中。

于 2012-10-01T20:47:11.277 回答
0

我会将其保存Map为常量,这样它就存在于方法之外,但仍然可以从内部引用。

public class MyController {
    private static Map sexoOpts = new HashMap();
    private static Map sexoOpts2 = new HashMap();

    static {
        sexoOpts.put("M", "homem");
        sexoOpts.put("F", "mulher");
        sexoOpts2.put("M", "Busco por homens");
        sexoOpts2.put("F", "Busco por mulheres");
    }

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model, HttpServletRequest request) {
        //I have access to sexoOpts and sexoOpts2, so there is no
        //need to instantiate them in here anymore...
    }

    @RequestMapping(value = "/save-email", method = RequestMethod.POST)
    public String doSaveEmail(@Valid @ModelAttribute("email") Email email,BindingResult result, Model model, HttpServletRequest request){
        //I have access to sexoOpts and sexoOpts2, so there is no
        //need to instantiate them in here anymore...
    }
}
于 2012-10-01T19:32:09.623 回答