1
首先,我對此很新,很抱歉,如果這個問題是愚蠢的。我有兩個控制器,具有一流的請求映射和表單驗證:Hibernate @Valid SpringMVC中的奇怪行爲
@Controller
@RequestMapping("/creditcard")
public class CreditCardController {
@Autowired
//repositories
@RequestMapping(value = "/addnewcard", method = RequestMethod.POST)
public String addNew(
@ModelAttribute("newCard") @Valid CreditCard creditCard,
BindingResult bindingResult, Principal principal, Model model) {
if (bindingResult.hasErrors()) {
//render error view
}
creditCardService.registerNew(creditCard, principal.getName());
return "redirect:/account";
}
上userprofile.jsp
<form:form cssClass="form-horizontal" modelAttribute="newCard" action="creditcard/addnewcard">
........
</form:form>
另一個
@Controller
@RequestMapping("/account")
public class AccountController {
@Autowired
//repo
@RequestMapping("")
public String showUserProfile(Principal principal, Model model) {
String username = principal.getName();
User user = userService.findByUsername(username);
Account account = user.getAccount();
List<Payment> payers = paymentService
.getAllPaymentsForPayerAccount(account.getId());
model.addAttribute("user", user);
model.addAttribute("account", account);
model.addAttribute("payers", payers);
return "userprofile";
}
}
形式,並且這一切工作,而不@Valid
。當我添加@Valid
它工作正常,當驗證失敗(顯示錯誤視圖與消息),但是當它成功時,我得到404
錯誤,由於不正確的URI - http://localhost:8080/PaymentSystem/creditcard/creditcard/addnewcard
。這裏有一個/creditcard
是額外的,@Valid
以某種方式將此添加到我的URI。我發現途徑我解決這個問題: 1)我感動addNew
卡法「的AccountController」
2)我只是刪除@RequestMapping("/creditcard")
但我仍沒有發現這樣的行爲的任何解釋。任何想法?