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

@验证不在页面上显示错误

尤夕
2023-03-14

@将有效的打印信息发送到控制台,但不发送到页面

@Controller
public class RoomsController {

    private final HotelService hotelService;
    private final ComfortService comfortService;
    private final RoomService roomService;

    @Autowired
    public RoomsController(HotelService hotelService, ComfortService comfortService, RoomService roomService) {
        this.hotelService = hotelService;
        this.comfortService = comfortService;
        this.roomService = roomService;
    }

    @GetMapping("/admin/deleteRoom")
    String showDeleteRoomPage(@ModelAttribute("formData") DeleteRoomFormData formData){
        return "deleteRoom";
    }

    @PostMapping("/admin/deleteRoom")
    String doDeleteRoom(@Valid @ModelAttribute("formData")DeleteRoomFormData formData, Model model, BindingResult bindingResult){
        if (bindingResult.hasErrors()) {
            return "deleteRoom";
        }

        roomService.deleteRoomByNumberAndHotelName(formData.toParameters());

        return "redirect:/";
    }


}
public class DeleteRoomFormData {
    @NotNull
    @Range(min = 1, max = 300)
    private int number;

    @NotNull
    @Size(min = 4, max = 400, message = "Minimum number of characters = 4" )
    private String hotelName;

    public RoomDeleteParameters toParameters(){
        return new RoomDeleteParameters(number,hotelName);
    }
    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public String getHotelName() {
        return hotelName;
    }

    public void setHotelName(String hotelName) {
        this.hotelName = hotelName;
    }
}
package ua.forms;

import ua.models.Hotel;

public class RoomDeleteParameters {
    private final int number;

    private final String hotelName;

    public RoomDeleteParameters(int number, String hotelName) {
        this.number = number;
        this.hotelName = hotelName;
    }

    public int getNumber() {
        return number;
    }

    public String getHotelName() {
        return hotelName;
    }
}

      <div class="card-body">

                    <form class="form-horizontal" data-th-action="@{/admin/deleteRoom}" data-th-object="${formData}" method="post">

                        <div class="errors">
                            <div th:utext="${errorMessage}" data-th-if="${error}" class="alert alert-danger" role="alert">
                            </div>
                        </div>

                        <div class="form-group">
                            <label for="hotelName" class="cols-sm-2 control-label">Hotel Name</label>
                            <div class="cols-sm-10">
                                <div class="input-group">
                                    <span class="input-group-addon"><i class="fa fa-envelope fa" aria-hidden="true"></i></span>
                                    <input type="text" class="form-control" name="hotelName" id="hotelName" placeholder="Enter hotel name"  data-th-field="*{hotelName}"/>
                                </div>
                                <p style="color:red" th:if="${#fields.hasErrors('hotelName')}" th:text="${#strings.listJoin(#fields.errors('hotelName'), ', ')}"></p>
                            </div>
                        </div>

                        <div class="form-group">
                            <label for="number" class="cols-sm-2 control-label">Hotel Name</label>
                            <div class="cols-sm-10">
                                <div class="input-group">
                                    <span class="input-group-addon"><i class="fa fa-envelope fa" aria-hidden="true"></i></span>
                                    <input type="text" class="form-control" name="number" id="number" placeholder="Enter number"  data-th-field="*{number}"/>
                                </div>
                                <p style="color:red" th:if="${#fields.hasErrors('number')}" th:text="${#strings.listJoin(#fields.errors('number'), ', ')}"></p>
                            </div>
                        </div>

                        <div class="form-group ">
                            <input type="submit" value="Delete">
                        </div>
                    </form>
                </div>

当我的字段有错误@Valid print info到控制台时,为什么不在第页?

字段hotelName上的对象formData中的字段错误:拒绝的值[];代码[Size.formData.hotelName, Size.hotelName, Size.java.lang.String, size];参数[org.springframework.context.support.DefaultMessageSourceResolable:代码[formData.hotelName, hotelName];参数[];默认消息[hotelName],400,4];默认消息[最小字符数=4]字段'Number'上的对象formData中的字段错误:拒绝的值[0];代码[Range.formData.number, Range.number, Range.int, Range];参数[org.springframework.context.support.DefaultMessageSourceResolable:代码[formData.number, Number];参数[];默认消息[Number],300,1];默认消息 [должно находиться в диапазоне от 1[300]]

共有1个答案

郎刚捷
2023-03-14

BindingResult参数需要遵循@ModelAtalty参数才能工作。因此,将您的@PostMap更改为:

    @PostMapping("/admin/deleteRoom")
    String doDeleteRoom(@Valid @ModelAttribute("formData")DeleteRoomFormData formData, BindingResult bindingResult, Model model){
        if (bindingResult.hasErrors()) {
            return "deleteRoom";
        }

        roomService.deleteRoomByNumberAndHotelName(formData.toParameters());

        return "redirect:/";
    }
 类似资料:
  • 将“然后向我显示页面”这一行添加到cucumber场景中,在我同事的计算机上使用相同的设置,但在我的计算机上则不然。实际上,添加暂停步骤定义并调用它似乎被完全忽略了。 步骤定义: 功能: 命令行: 使用Firefox 16.02(避免17中的错误) 两台机器都有git-fetch'd,拉取,捆绑安装,所以所有的宝石都是相同的,都使用Rbenv版本* 1.9.3-p327-perf。我可能错过了一些

  • 我在Tomcat 8.x web服务器上使用JAAS和基于表单的web身份验证。用户在尝试登录时被拒绝访问的原因有很多: 无效的用户名 密码无效 在数据库中没有帐户 数据库中的帐户未激活 数据库中的帐户没有必需的角色 等…… 在我的LoginModule中,我检查所有这些条件以及更多条件,如果不允许用户访问web应用程序,就会抛出LoginException。JAAS似乎捕捉到了抛出的LoginE

  • 我正在做一个项目,我对rails很陌生, 我完全搞不清楚出了什么问题。我得到这个错误。 产品中的命名错误#索引 未初始化常量ProductsController::Offer 本质上,我有一个我试图实现的功能。 在我的产品表中,我有一个名为保留价格的列,我希望用户在产品页面的表单上提交一个数字,然后根据保留价格对其进行验证,如果接受,则将其添加到购物车中,如果不是flash,请输入更高的报价, 问

  • 我有一个简单的项目使用QUUKUS 1.4.2。当我使用@Valid注释时,验证失败,状态为500,异常不会在控制台上显示。仅在Swagger UI中。我应该怎么做才能在控制台上打印出来? 正在发生的例外情况是: 错误是正确的。只是没有显示在控制台上。

  • 因此,很明显,它识别出输入的名称太短,但我在视图中没有得到任何错误消息,正如这里所预期的:。

  • 我已经实现了Omnifaces FullAjaxExceptionHandler,但问题是它不能处理ajax请求。在会话到期后,当我单击非ajax按钮时,它工作得很好。它将用户重定向到自定义错误页面。但是,如果按钮使用ajax,那么它什么都不做。佩奇只是个傻瓜。 编辑:我已将ActionListener更改为Action,但仍然相同。 编辑2:没有错误。ApacheTomcat输出和ApacheT