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

在相同的html页面中处理thymeleaf两个表单会出现错误

薛弘厚
2023-03-14

我正在尝试制作一个登录和注册页面,但问题是同一页面上的两个表单返回以下错误:

HTML表单代码

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <title>Material Login Form</title>

    <link rel="stylesheet" th:href="@{/css/bootstrap.min.css}"
          href="../static/css/reset.css"/>

    <link rel='stylesheet prefetch'
          href='http://fonts.googleapis.com/css?family=Roboto:400,100,300,500,700,900|RobotoDraft:400,100,300,500,700,900'/>
    <link rel='stylesheet prefetch' href='http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css'/>

    <!--<link rel="stylesheet" href="../static/css/style.css"/>-->
    <link rel="stylesheet" th:href="@{/css/style.css}"
          href="../static/css/style.css"/>


</head>

<body>


<!-- Mixins-->
<!-- Pen Title-->

<div class="container">
    <div class="card"></div>
    <div class="card">
        <h1 class="title">Login</h1>
        <form action="login" th:action="@{/register}" th:object="${login}" method="post" >
            <div class="input-container">
                <input type="text" id="email" th:field="*{email}"  required="required"/>
                <label for="email">email</label>
                <div class="bar"></div>
            </div>
            <div class="input-container">
                <input type="password" id="Password" th:field="*{password}"  required="required"/>
                <label for="Password">Password</label>
                <div class="bar"></div>
            </div>
            <div class="button-container">
                <button ><span>Go</span></button>
            </div>
            <div class="footer"><a href="#">Forgot your password?</a></div>
        </form>
    </div>
    <div class="card alt">
        <div class="toggle"></div>
        <h1 class="title">Register
            <div class="close"></div>
        </h1>
        <form action="register" th:action="@{/register}" th:object="${register}" method="post">
            <div class="input-container">
                <input type="text" id="firstName" th:field="*{firstName}" required="required"/>
                <label for="firstName">First Name</label>
                <div class="bar"></div>
            </div>

            <div class="input-container">
                <input type="text" id="lastName" th:field="*{lastName}" required="required"/>
                <label for="lastName">Last Name</label>
                <div class="bar"></div>
            </div>

            <div class="input-container">
                <input type="text" id="email_" th:field="*{email}" required="required"/>
                <label for="email">Email</label>
                <div class="bar"></div>
            </div>
            <div class="input-container">
                <input type="password" id="Password_" th:field="*{password}" required="required"/>
                <label for="Password">Password</label>
                <div class="bar"></div>
            </div>
            <div class="button-container">
                <button><span>Next</span></button>
            </div>
        </form>
    </div>
</div>
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>

<script th:src="@{/js/index.js}"></script>


</body>
</html>

控制器代码:

@Controller
public class UserController {
    private UserServices userServices;

    @Autowired
    private UserRepository repository;


    @Autowired
    public UserController(UserServices userServices) {
    this.userServices=userServices;
    }

    // Retrive Registration form
    @RequestMapping(value = "/register", method = RequestMethod.GET)
    public String getRegisterForm(Model model) {
        model.addAttribute("register", new User());
        return "index";
    }

    //Submitting registration form and adding user
    @RequestMapping(value = "/register", method = RequestMethod.POST,params = "action=register")
    public String registerSubmit(@ModelAttribute User user, Model model) {
        model.addAttribute("register", user);
        if (repository.findByEmail(user.getEmail()) == null) {
            userServices.creat(user);
        } else {
            return "index";
        }
        return "index";
    }

    //retrive login form
    @RequestMapping(value = "/login",method = RequestMethod.GET)
    public String getLoginForm(Model model){

        model.addAttribute("login" , new User());
        return "index";
    }

}

共有1个答案

彭炳
2023-03-14

您的错误消息显示BindingResult和bean名称'register'的普通目标对象都不能作为请求属性使用。如果查看getLogInform方法,您只填充了模型中的“login”对象,而不是“register”对象。如果您希望在一个页面上有两个表单,我认为您需要一个method=requestMethod.get方法来填充这两个表单的默认值。无论何时显示此页面,都需要确保填充了两个表单备份对象。

 类似资料:
  • 我想问一下我如何才能在一个页面中使用相同的提交2个html表单。我希望对这两个表单都有相同的操作,从而使用相同的servlet来处理Reuqest。

  • 当我试图从我的thymeleaf html表单中保存一个Date输入到控制器时,我收到一条错误消息。它似乎是作为字符串从表单中发送的,但我希望它作为Date发送。我设置了输入类型=date,所以我不确定它为什么出错。这是错误: 下面是该部分的html代码,expirationDate是我发送回控制器的卡对象的一个属性: 这是控制器。获取日期值并在表单中预先填写可以很好地工作,但由于某种原因,当我提

  • 问题内容: 我想将注册和登录表格都放在同一页面上。 它们都以: 所以,我需要这样的东西: 还有如何在第二个表格繁忙时防止执行第一个表格,反之亦然(用户单击两者) 我的想法是在启动流程时(例如,在流程结束时)创建一个简单变量,因此: 可能有更好的方法。 问题答案: 您可以通过两种不同的动作制作两种形式 还是这样做 然后,您的PHP文件将用作一个switch($ _ POST [‘action’])…

  • 问题内容: 我有两个表,它们的定义如下: 和这里代表。 我做了一个简单的本地SQL只能加入到选择和为: 但是我在行上遇到异常: 堆栈跟踪 : 您能建议出什么事了吗? 问题答案: 您需要设置结果别名。

  • 问题内容: 我有两个表,它们的定义如下: 和这里代表。 我做了一个简单的本地SQL只能加入到选择和为: 但是我在行上遇到异常: 堆栈跟踪 : 你能建议出什么事了吗? 问题答案: 您需要设置结果别名。

  • 我试图以此作为SpringBoot中静态内容的参考 我正在尝试设置隐藏输入字段中的值。但这给了我错误 org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为org.thymeleaf.exceptions.TemplateInputException:异常解析文档:template=“apppage”,第9行-第33列 我正