亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring MVC/hibernate 表單驗證,不返回表單

Spring MVC/hibernate 表單驗證,不返回表單

青春有我 2021-11-11 18:08:25
我目前正在使用 Hibernate 和 Spring MVC 進行一些 HTML 表單驗證。我已經對 Enity 應用了一些驗證并將代碼添加到我的控制器中。將包含格式不正確數據的表單提交給控制器時,將顯示錯誤頁面頁面 (500)。但是,我希望將表單返回給用戶,并在不正確的字段附近顯示錯誤消息。實體代碼: @NotNull(message="Please enter a product")    @Column(name="product_name")    private String productName;    @NotNull(message="Please enter a product code")    @Pattern(regexp="([A-Z]{2,4})-([0-9]{5})|", message="Incorrect format")    @Column(name="product_code")    private String productCode;控制器代碼:    @GetMapping("/showFormForAdd")public String showFormForAdd(Model theModel) {    // create model attribute to bind form data    QaRaised theProduct = new QaRaised();    theModel.addAttribute("product", theProduct);    return "product-form";}@PostMapping("/saveProduct")public String saveProduct(@Valid @ModelAttribute("product") QaRaised theProduct, BindingResult bindingResult) {    qaRaisedService.saveProduct(theProduct);    if (bindingResult.hasErrors()) {        return "product-form";    }    return "redirect:/products/qaraised";}來自錯誤的堆棧跟蹤:    org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [com.sonya.spring.entity.QaRaised] during persist time for groups [javax.validation.groups.Default, ]List of constraint violations:[ConstraintViolationImpl{interpolatedMessage='Incorrect format', propertyPath=productCode, rootBeanClass=class com.sonya.spring.entity.QaRaised, messageTemplate='Incorrect format'}表格代碼:  <div class="form-group"><label for="InputPC">Product Code:</label><form:input required="true" type="text"  title="Product Code" path="productCode" class="form-control" id="productCodeInput" placeholder="Enter Product Code" commandName="productCode"/><form:errors path="productCode"/>這里的驗證工作正常,我只是想將用戶重定向回表單。誰能看到我遺漏的任何東西或為我指明正確的方向?
查看完整描述

1 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

這是一個老問題,但實際上我遇到了與您遇到的完全相同的編碼問題的完全相同的問題,所以萬一其他人遇到這個問題......


@want2learn 是對的 - 在確保數據有效之前,您不應該嘗試保存數據。否則,驗證器將拋出異常。只需將您的保存邏輯向下移動:


@PostMapping("/saveProduct")

public String saveProduct(@Valid @ModelAttribute("product") QaRaised theProduct, BindingResult bindingResult) {

    if (bindingResult.hasErrors()) {

        return "product-form";

    }

    qaRaisedService.saveProduct(theProduct);

    return "redirect:/products/qaraised";

}


查看完整回答
反對 回復 2021-11-11
  • 1 回答
  • 0 關注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號