当前位置: 首页 > 知识库问答 >
问题:

绑定结果给出白标签错误页

周翼
2023-03-14
<div th:if="${parentCategories.size() == 0}">
        <span>There are no categories, please, add some categories!</span>
    </div>
    <div th:unless="${parentCategories.size() == 0}">
        <label for="subcategoryForm">Add a subcategory</label>
        <form id="subcategoryForm" th:action="@{/category/add-subcategory}" th:object="${category}" method="post">

            <label for="name">Category name</label>
            <input id="name" type="text" th:field="*{categoryName}"/>
            <span th:if="${#fields.hasErrors('categoryName')}" th:errors="*{categoryName}" th:errorclass="error"></span>

            <label for="selectParentCategory">Enter a parent category</label>
            <select id="selectParentCategory" th:field="*{parentCategoryName}">
                <option th:each="category : ${parentCategories}"
                        th:value="${category.categoryName}"
                        th:text="${category.categoryName}"/>
                <span th:if="${#fields.hasErrors('parentCategoryName')}" th:errors="*{parentCategoryName}" th:errorclass="error"></span>
            </select>

            <button type="submit">Add category</button>
        </form>
    </div>
@Setter
@Getter
public class CategoryDTO {

    @CategoryValidator
    private String categoryName;

    @ParentCategoryValidator
    private String parentCategoryName;

}

@CategoryValidator由CategoryValidatorImpl验证:

@Autowired
    private CategoryRepository categoryRepository;

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if(value.isBlank()){
            context.disableDefaultConstraintViolation();
            context.buildConstraintViolationWithTemplate("{categoryDTO.blank}").addConstraintViolation();
            return false;
        }

        Optional<Category> optionalCategory = categoryRepository.findByName(value);
        if (optionalCategory.isPresent()) {
            context.disableDefaultConstraintViolation();
            context.buildConstraintViolationWithTemplate("{categoryDTO.alreadyExists}").addConstraintViolation();
            return false;
        }

        Pattern pattern = Pattern.compile("[a-zA-Z\\s]*");
        Matcher matcher = pattern.matcher(value);
        if (!matcher.matches()) {
            context.disableDefaultConstraintViolation();
            context.buildConstraintViolationWithTemplate("{categoryDTO.name.invalid}").addConstraintViolation();
            return false;
        }

        return true;
    }

和CategoryController的一部分:

@GetMapping("/subcategory-form")
public String getSubcategoryForm(Model model){
    List<CategoryDTO> listOfParentCategories = categoryService.getParentCategories();
    model.addAttribute("category", new CategoryDTO());
    model.addAttribute("parentCategories", listOfParentCategories);
    return "add-subcategory-form";
}

@PostMapping("/add-subcategory")
public String addSubcategory(@Valid @ModelAttribute("category") CategoryDTO categoryDTO, BindingResult bindingResult){
   

 if(bindingResult.hasErrors()){
            return "add-subcategory-form";
        }
        categoryService.add(categoryDTO);
        return "redirect:/category/subcategory-form";
    }  

在输入字段中,当我输入一个空白时,验证器使用控制器中的hasErrors正确地发现它,但当我在发现空白并返回false后返回表单时,它会给出以下信息:

共有1个答案

丁昌翰
2023-03-14

stacktrace对此问题有以下提示:

计算SpringEL表达式的异常:“parentcategories.size()==0”(模板:“add-subcategories-form”-第13行,col 10)

和:

@PostMapping("/add-subcategory")
public String addSubcategory(@Valid @ModelAttribute("category") CategoryDTO categoryDTO, BindingResult bindingResult) {
   
        if(bindingResult.hasErrors()){
            List<CategoryDTO> listOfParentCategories = categoryService.getParentCategories();
            model.addAttribute("parentCategories", listOfParentCategories);
            return "add-subcategory-form";
        }
        categoryService.add(categoryDTO);
        return "redirect:/category/subcategory-form";
    }  
 类似资料:
  • 问题内容: 根据Wolfram Mathematica: cos(50) = 0.6427876096865394 ; 但是这段Java代码: 给出 0.9649660284921133 。 有什么问题吗? 问题答案: 期望参数以弧度为单位。这将返回您需要的结果:

  • 我在两个特征类中有两个几何,一个名为“HY90299”,另一个名为“hyboxsdo”,这两个几何不相交。 但是当我在oralce中运行空间查询时, “从 HY90299 t,hyboxsdo g 中选择sdo_relate(t.shape,g.shape ,'mask=ANYINTERACT') ” , 我的预言机版本是11g 追加

  • 我不知道如何解决这个问题 spring端:role.java 因此,如果我现在尝试inline=“javascript”: 当我运行它时,我得到这样的响应: 白标签错误页

  • 当我运行spring boot MVC应用程序时,得到以下白标签错误页面。 白标签错误页 此应用程序没有/error的显式映射,因此您将其视为一种后退。 Wed Apr 13 15:45:59 IST 2016出现意外错误(Type=内部服务器错误,Status=500)。循环视图路径[home]:将再次发送回当前处理程序URL[/rewards/web/home]。检查您的ViewResolve

  • 当我在本地执行“java-jar target/loginmodel-0.0.1-snapshot.jar”并尝试在浏览器上看到它时,它工作得很好,没有任何错误。我只是在尝试在docker容器上运行应用程序时才得到错误。到底错在哪里?

  • 我试图创建一个spring boot starter项目。当我试着运行这个时,我遇到了这个错误。 白标签错误页面 此应用程序没有 /error的显式映射,因此您将此视为后备。 Fri Dec29 14:16:46IST 2017有一个意外的错误(type=未找到,status=404)。/ 我将jsp文件添加到src/web-inf/views中/ 已添加 Springmvc。看法前缀=/WEB-