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

Thymeleaf无法使用表达式“*”绑定表单错误

姜智渊
2023-03-14

我使用Spring boot和Thymeleaf模板引擎,并尝试使用th:classappend属性为添加可选的“has error”类

<form method="POST" action="/registration" class="form-signin">
        <h2 class="form-signin-heading">Create your account</h2>

        <div class="form-group" th:classappend="${#fields.hasErrors('*')} ? 'has-error' : ''">
            <input name="username" type="text" class="form-control" placeholder="Username" autofocus="true"/>
            <p class="alert alert-danger" th:if="${#fields.hasErrors('username')}" th:errors="*{username}"></p>
        </div>

        <div class="form-group" th:classappend="${#fields.hasErrors('*')} ? 'has-error' : ''">
            <input name="password" type="text" class="form-control" placeholder="Password" autofocus="true"/>
            <p class="alert alert-danger" th:if="${#fields.hasErrors('password')}" th:errors="*{password}"></p>
        </div>

        <div class="form-group" th:classappend="${#fields.hasErrors('*')} ? 'has-error' : ''">
            <input name="passwordConfirm" type="text" class="form-control" placeholder="Confirm your password" autofocus="true"/>
            <p class="alert alert-danger" th:if="${#fields.hasErrors('passwordConfirm')}" th:errors="*{passwordConfirm}"></p>
        </div>

        <button class="btn btn-lg btn-primary btn-block" type="submit">Submit</button>


    </form>

但是我有这个错误

无法使用表达式“*”绑定表单错误。请检查此表达式是否在适当的上下文中执行(例如,具有th:object属性的a)

我的控制器方法

@RequestMapping(value = "/registration", method = RequestMethod.GET)
    public String registration(Model model) {
        model.addAttribute("userForm", new User());

        return "registration";
    }

    @RequestMapping(value = "/registration", method = RequestMethod.POST)
    public String registration(@ModelAttribute("userForm") User userForm, BindingResult bindingResult, Model model) {
        userValidator.validate(userForm, bindingResult);

        if (bindingResult.hasErrors()) {
            return "registration";
        }

        userService.save(userForm);

        securityService.autologin(userForm.getUsername(), userForm.getPasswordConfirm());

        return "redirect:/welcome";
    }

我做错了什么?

共有1个答案

袁弘方
2023-03-14

我只是将th:object=“${userForm}属性添加到我的form元素中。现在它工作得很好!

 类似资料:
  • 我从胸腺嘧啶开始。我只是复制了一个例子,并根据我的需要进行了调整。然而,它并不起作用。我很感激任何帮助。 标签 控制器 labelForm.html ...

  • 问题内容: 尝试在模板中合并多个值时遇到问题。根据Thymeleaf的说法,我应该可以将它们+一起组合在一起… 4.6合并文本 文本,无论它们是文字还是评估变量或消息表达式的结果,都可以使用+运算符轻松连接: 这是我发现有效的示例: 但是,这不是: 从逻辑上讲,这应该可以,但是不能,我在做什么错? Maven: 这是我设置TemplateEngine和TemplateResolver的方法: Th

  • 我对thymeleaf是新手,不明白这个错误。

  • 下面是我正在使用的正则表达式的最新版本,它抛出了错误“Invalid regular expression” XSD:正则表达式在位置4验证失败:当前选项设置不支持此表达式。 我在xsd文件中得到了这个异常,我正在message broker(IIB)中开发这个xsd。有谁能帮我解决这个问题吗?

  • 我使用的是spring boot thymeleaf neo4j。除了thymeleaf无法解析模板product_网格中th:each块中使用的'product'变量的一些属性外,其他一切都正常工作。html,其中包括表单标记中的th:src=“${product.URL}”、th:text=“${product.title}”和th:action=“@{/product/(${product.

  • 本文章将介绍Thymeleaf Spring表达式语法中的概念。 Spring Expression Language(简称SpEL)是一种强大的表达式语言,支持在运行时查询和操作对象图。 语言语法类似于Unified EL,但提供了额外的功能,特别是方法调用和基本的字符串模板功能。 Spring表达式语言的创建旨在为Spring社区提供单一支持的表达式语言。 它的语言特性是由Spring项目中的