将 JSP 转换为 Thymleaf:属性名称不能为 Null 或空

我目前正在将许多.jsp页面转换为HTML使用Thymeleaf. 我已经成功转换了其中一些,但是在检查带有表单标签的任何页面时,我收到以下错误:

Attribute name cannot be null or empty during the initial page load.


查看代码

   <!-- Registration Form -->

            <form action="#" th:action="@{/register/processRegistrationForm}" th:object="${user}" method="POST" class="form-horizontal">


    <!-- User name -->

                    <div style="margin-bottom: 25px" class="input-group">

                        <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span> 

                        <input type="text" th:field:="*{userName}" placeholder="Username (*)" class="form-control" />

                    </div>


                    <!-- Password -->

                    <div style="margin-bottom: 25px" class="input-group">

                        <span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span> 

                        <input type="text" th:field:="*{password}" placeholder="First Name (*)" class="form-control" />

                    </div>

控制器代码


@GetMapping("/showRegistrationForm")

public String showMyRegistrationPage(

        Model theModel) {


    theModel.addAttribute("user", new UserRegistrationDto());


    return "Login/registration-form";

}


@PostMapping("/processRegistrationForm")

public String processRegistrationForm(

            @Valid @ModelAttribute ("user") UserRegistrationDto userDto, 

            BindingResult theBindingResult, 

            Model theModel) {


    String userName = userDto.getUserName();

    logger.info("Processing registration form for: " + userName);


    // form validation

     if (theBindingResult.hasErrors()){

         return "Login/registration-form";

        }



慕后森
浏览 165回答 3
3回答

森栏

我认为问题出在这两行上:<input type="text" th:field:="*{userName}" placeholder="Username (*)" class="form-control" /><input type="text" th:field:="*{password}" placeholder="First Name (*)" class="form-control" />:由于您在后面添加了“”列,th:field因此可能会出现错误。所以这两行应该是这样的:<input type="text" th:field="*{userName}" placeholder="Username (*)" class="form-control" /><input type="text" th:field="*{password}" placeholder="First Name (*)" class="form-control" />由于 thymeleaf 没有提供对问题或有问题的行号的良好解释,因此查找问题确实变得很头疼。它只是说“属性名称不能为空”,而您只是搜索空属性。

杨__羊羊

我遇到了同样的问题,我只是将错误减少 1 1。所以我对每个输入和每个表单都进行了评论。而问题就在这里<form&nbsp;action="#"&nbsp;th:action="@{/register/processRegistrationForm}"&nbsp;th:object="${user}"&nbsp;method="POST"&nbsp;class="form-horizontal">在th:object="${user}",也许这个技巧可以帮助你一点,因为这个问题还没有解决。

繁星coding

也许晚了,但我想我明白问题所在了。th:field:="*{password}"有:太多应该th:field="*{password}"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java