在添加之前检查控制器方法中的模态属性是否存在

时间:2013-08-13 11:39:09

标签: java spring spring-mvc modelattribute

我有一个spring控制器,我想要一个方法来处理某个请求,然后重定向到另一个请求保持一些值,所以我将在第一个使用RedirectAttributes而在第二个使用@ModalAttribute,但事情是我不会总是存在这个模态属性,因此我只想在它存在的情况下添加它。

@RequestMapping("/main")
public String getMain(Model model,HttpSession session,@ModalAttribute List<Loans> loansList){
    if(session.getAttribute("user") != null){
        if(session.getAttribute("current_start")!=null){
            model.addAttribute("loans",loanDao.findAll((Integer) session.getAttribute("current_start")));
        } else {
            model.addAttribute("loans",loanDao.findAll(0));
            session.setAttribute("current_start",0);
        }
        model.addAttribute("loan",new Loan());
        model.addAttribute("countries",countryDao.findAll());
        model.addAttribute("types",typeDao.findAll());
        session.setAttribute("total_loans_number", loanDao.findCount());
        return "main";
    } else {
        return "redirect:index";
    }
}

并重定向一个

@RequestMapping(value = "/search")
public String searchLoans(Model model,RedirectAttributes redirectAttributes,
                          @RequestParam String keyword){
    redirectAttributes.addAttribute("loansList",loanDao.findAll(keyword));
    return "redirect:/main";
}

但是这里的@ModalAttribute失败了,因为它有时候不存在,有时我请求主要没有loanList,如果只有它存在才能添加条件?或者如何正确地做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以让Spring使用方法上的@ModalAttribute注释填充模型属性:

@ModalAttribute("results")
public List<Loans> populateLoans() {
    return new ArrayList<Loans>();
}

@RequestMapping("/main")
public String getMain(Model model,HttpSession session,@ModalAttribute("results") List<Loans> loansList){
    if (CollectionUtils.isNotEmpty(loanList)) {
        // do something if the loan list is not empty. 
    }
}