/** * */ package com.packt.patterninspring.chapter10.bankapp.web.controller; import java.util.List; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.Errors; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import com.packt.patterninspring.chapter10.bankapp.model.Account; import com.packt.patterninspring.chapter10.bankapp.service.AccountService; /** * @author Dinesh.Rajput * */ @Controller public class AccountController { @Autowired AccountService accountService; @InitBinder public void initBinder(WebDataBinder binder) { binder.initDirectFieldAccess(); //binder.setDisallowedFields("id"); //binder.setRequiredFields("name", "balance"); } @ModelAttribute public Account account() { return new Account(); } @GetMapping(value = "/open-account") public String openAccountForm (){ return "accountForm"; } @PostMapping(value = "/open-account") public String save (@Valid @ModelAttribute("account") Account account, Errors errors){ if (errors.hasErrors()) { return "accountForm"; } accountService.open(account); return "redirect:/accounts/"+account.getId(); } @GetMapping(value = "/accounts/{accountId}") public String getAccountDetails (ModelMap model, @PathVariable Long accountId){ Account account = accountService.findOne(accountId); model.put("account", account); return "accountDetails"; } @GetMapping(value = "/all-accounts") public String all (ModelMap model){ List<Account> accounts = accountService.findAllAccounts(); model.put("accounts", accounts); return "accounts"; } }