BindingResult错误,但现在显示消息

时间:2019-07-17 15:01:10

标签: java spring validation spring-mvc thymeleaf

我正在使用Spring Boot 2.1.6.RELEASE,我有控制器

/**
 * Submit dữ liệu edit InventoryItemCategory.
 *
 * @return
 */
@RequestMapping(value = "/edit_inventory_item_category", method = RequestMethod.POST)
public String submitDataEditInventoryItemCategory(@ModelAttribute("inventoryItemCategoryForm") @Valid InventoryItemCategoryForm inventoryItemCategoryForm, BindingResult bindingResult, Authentication authentication) {
    if (bindingResult.hasErrors()) {
        return "inventory_item_category/edit";
    }
    Optional<InventoryItemCategory> inventoryItemCategoryOptional = inventoryItemCategoryRepository.findById(inventoryItemCategoryForm.getId());
    InventoryItemCategory inventoryItemCategoryOld = inventoryItemCategoryOptional.get();
    InventoryItemCategory inventoryItemCategory = new InventoryItemCategory();
    inventoryItemCategory.setId(inventoryItemCategoryForm.getId());
    inventoryItemCategory.setCreatedBy(inventoryItemCategoryOld.getCreatedBy());
    inventoryItemCategory.setCreatedDate(inventoryItemCategoryOld.getCreatedDate());
    inventoryItemCategory.setInventoryCategoryCode(inventoryItemCategoryForm.getInventoryCategoryCode());
    inventoryItemCategory.setInventoryCategoryName(inventoryItemCategoryForm.getInventoryCategoryName());
    inventoryItemCategory.setBkitCodeId(inventoryItemCategoryForm.getBkitCodeId());
    inventoryItemCategory.setGrade(2); // Chưa rõ tác dụng.
    inventoryItemCategory.setDescription(inventoryItemCategoryForm.getDescription());
    if(inventoryItemCategoryForm.getActiveStatus() == null){
        inventoryItemCategory.setActiveStatus(Boolean.FALSE);
    }else {
        inventoryItemCategory.setActiveStatus(Boolean.TRUE);
    }
    java.sql.Timestamp now = new java.sql.Timestamp(new java.util.Date().getTime());
    inventoryItemCategory.setCreatedDate(now);
    inventoryItemCategory.setCreatedBy(authentication.getName());
    inventoryItemCategory.setIsSystem(Boolean.FALSE); // Do người dùng thêm vào.
    inventoryItemCategory.setIsParent(Boolean.FALSE); // Chưa rõ tác dụng. NOT NULL.
    //FIXME: Khi con của nó đang ActiveStatus = 1 mà cho phép cha của nó ActiveStatus = 0 là sai.
    // Kiểm tra xem có con không?
    // Phải tìm cả bản ghi có ActiveStatus = 0.
   if(inventoryItemCategoryForm.getActiveStatus() != inventoryItemCategoryOld.getActiveStatus() && inventoryItemCategory.getActiveStatus() == Boolean.FALSE){
       List<InventoryItemCategory> inventoryItemCategoryListTemp = inventoryItemCategoryRepository.findByParentId(inventoryItemCategoryOld.getParentId());
       if(inventoryItemCategoryListTemp.size() > 0){
           for (InventoryItemCategory inventoryItemCategory1 : inventoryItemCategoryListTemp){
               if(inventoryItemCategory1.getActiveStatus() == Boolean.TRUE){
                   ObjectError objectError = new ObjectError("activeStatus", "Hiện đang có Nhóm con phụ thuộc vào Nhóm bạn đang sửa, nên không thể thay đổi trạng thái theo dõi được. Cần bỏ trạng thái theo dõi hoặc xóa bỏ nhóm con trước đã.");
                   bindingResult.addError(objectError);
                   return "inventory_item_category/edit";
               }
           }
       }
   }
    if (inventoryItemCategoryForm.getParentId() == null) {
        inventoryItemCategory.setParentId(0);
    } else {
        inventoryItemCategory.setParentId(inventoryItemCategoryForm.getParentId());
    }
    inventoryItemCategoryRepository.save(inventoryItemCategory);
    return "redirect:/inventory_item_categories";
}

请专注于这一行

ObjectError objectError = new ObjectError("activeStatus", "Hiện đang có Nhóm con phụ thuộc vào Nhóm bạn đang sửa, nên không thể thay đổi trạng thái theo dõi được. Cần bỏ trạng thái theo dõi hoặc xóa bỏ nhóm con trước đã.");

查看时

<form method="post" th:action="@{'/edit_inventory_item_category'}" th:object="${inventoryItemCategoryForm}">
    <table style="width: 1366px;">
    <tr>
        <td>
            <p th:if="${#fields.hasErrors('activeStatus')}" th:errors="*{activeStatus}" class="k-error-colored">Error</p>
        </td>
        <td><input type="checkbox" th:checked="${inventoryItemCategoryForm.activeStatus}" name="activeStatus" id="activeStatus" class="k-checkbox"><label for="activeStatus" class="k-checkbox-label">Trạng thái theo dõi</label></td>
    </tr>

源代码:https://gist.github.com/donhuvy/2de640fbe640c1bce7414fb54e97fe58#file-edit-html-L73

https://gist.github.com/donhuvy/dd893a3c520dd7fee54e1df19a0961ee#file-inventoryitemcategorycontroller-java-L225

这是调试屏幕

enter image description here

返回到编辑屏幕,但不显示错误:https://imgur.com/a/CAMRFkG

我调试,它有错误,该表格不允许写入数据库(正确),但是我看不到屏幕上显示错误。如何显示错误消息?

0 个答案:

没有答案