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

使用thymeleaf的html表单验证在spring boot中不起作用

苗征
2023-03-14

我无法捕获使用ThymalLeaf模板的html表单中的任何验证。

窗体对象-

public class TestForm {
....
    @Pattern(regexp = "[a-zA-Z]*", message = "Only characters")
    private String field1;
....
getter/setters
}

HTML代码-

<div id="main">
            <form action="#" th:action="@{/create}" th:object="${testForm}" method="post" >
                <div>
                    <label> Field1:</label>
                    <input type="text" th:field="${testForm.field1}" name="field1" />
                    <div th:if="${#fields.hasErrors('field1')}" th:errors="*{field1}">errors</div>
                </div>                  
                <input type="submit" value="Submit" />          
            </form> 
        </div>

控制器-

@RequestMapping(method= RequestMethod.POST, value = "/create")
public String createTest(@Valid @ModelAttribute("testForm") TestForm testForm, MultipartHttpServletRequest request, BindingResult bindingResult) throws IOException {
    if (bindingResult.hasErrors()) 
        return "createtestform";

未引发任何错误,表单已成功提交。

共有2个答案

商勇
2023-03-14

您是否尝试删除其他操作?从此

还有两个想法。
1。也许你的javax.validation.Pattern在某个地方被重写了?
2.您是否尝试过删除@ModelAt0016("testForm")?因此,您的方法签名将是公共String createTest(@Valid TestForm testForm, MultipartHttpServlet呼号,BindingResult bindingResult)抛出IOExcture

西门智
2023-03-14

我想麻烦是因为你把结果放错了。将其替换为MultipartHttpServletRequest,它必须位于验证参数之后:

@RequestMapping(method= RequestMethod.POST, value = "/create")
public String createTest(@Valid @ModelAttribute("testForm") TestForm testForm,  BindingResult bindingResult, MultipartHttpServletRequest request) throws IOException {
if (bindingResult.hasErrors()) 
    return "createtestform";
 类似资料:
  • 我的springboot版本是2.3.7。我知道spring boot starter验证不是spring boot starter web的可传递依赖项。但即使单独添加了它,我的注释也不起作用。 //下面的依赖我已经添加build.gradle编译'org.springframework.boot: spring-boot-starter-validation' //我希望在请求时出错的示例类

  • 我刚接触spring,我使用《spring in action 5》一书对其进行了探索。我对我的网站做了类似的操作,我已经为页面编写了2个控制器和2个html文件。第一页是比萨饼制作表单。第二个是订单提交。我的控制器代码实际上与书中的相同。在我开始验证表单输入之前,一切都很顺利。我做了比萨饼、订购课程和控制器所需的一切。 订单类: 比萨饼类: 披萨制作控制器: 表单提交控制器: 问题在于验证比萨饼

  • 我正在按照本指南使用Spring表单验证,但我无法在自己的程序中验证表单。我完全按照指南中的描述去做,但在我的应用程序中却不起作用。 我使用Spring Tools Suite并下载了示例应用程序,以查看它是否真的可以工作。我看不出究竟是什么原因导致表单验证发生在示例应用程序中而不是我的应用程序中。我试图通过从POM中移除依赖项来缓慢地更改示例应用程序,以使其中断,但它继续工作.....到底是哪个

  • 问题内容: 我正在尝试仅在成功验证后提交表格。验证适用于必填项,但不适用于ng-minlength 表单输入无效,但仍在提交表单。 http://jsfiddle.net/pMMke/9/ 我究竟做错了什么。 我不想使用提交按钮禁用方法。 问题答案: 这是您做错的事情:您正在混合使用两个概念Angular验证器 和 HTML5验证器。 在 需要 HTML5验证,例如,规定: 如果存在,它指定提交表

  • 我在验证表单时遇到了Thymeleaf问题。我正在尝试创建简单的用户注册表单来学习Spring,不幸的是我被卡住了。 这是我的UserForm类 第一个问题是在initBinder中添加自定义验证器类时 @Not空验证注释的“默认”停止工作。这是预期行为吗? 第二个问题是如何在thymeleaf中显示全局拒绝消息 我的validator类如下所示 和后映射从控制器 作为“默认”验证错误,我可以使用