0

メソッドで特定のリクエストを処理し、値を付けたまま別のリクエストにリダイレクトするスプリングコントローラーがあるので、最初のリクエストで RedirectAttributes を使用し、2番目のリクエストで @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 が存在しない場合があるため失敗します。ローンリストなしでメインを要求することがあります。存在する場合にのみ追加する条件を作成するにはどうすればよいですか? またはこれを正しく行う方法は?

4

1 に答える 1

1

メソッドで @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. 
    }
}
于 2013-08-13T11:49:30.340 に答える