簡體   English   中英

Hibernate @Valid在SpringMVC中的奇怪行為

[英]Hibernate @Valid strange behaivor in 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";
    }

另一個

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

在userprofile.jsp上形成表格

<form:form cssClass="form-horizontal" modelAttribute="newCard" action="creditcard/addnewcard">
........
</form:form>

而所有這些都不需要@Valid 當我添加@Valid它可以正常工作,當驗證失敗時(顯示帶有消息的錯誤視圖),但是當它成功時,由於URI不正確,我會收到404錯誤http://localhost:8080/PaymentSystem/creditcard/creditcard/addnewcard 這里一個/creditcard是多余的,@ @Valid以某種方式將其添加到我的URI中。 我找到了解決此問題的方法:1)我將addNew卡方法移至“ AccountController”

2)我剛剛刪除了@RequestMapping("/creditcard")

但是我仍然沒有找到任何關於這種行為的解釋。 任何想法?

我找到了解決此問題的第三種方法,最適合這種情況。 我只是將${pageContext.request.contextPath}添加到我的操作參數中,如下所示:

<form:form cssClass="form-horizontal" modelAttribute="newCard" action="${pageContext.request.contextPath}/creditcard/addnewcard">
........
</form:form>

但它仍然不知道這種@Valid行為的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM