有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我可以在Spring中检查错误之前在BindingResult中添加值吗?

在Spring中检查错误之前,我可以在BindingResult中添加值吗

@InitBinder("memberrequest")
    public void initMemberRequestBinder(WebDataBinder binder) {
        binder.setValidator(new MemberRequestValidator());
    }


@PreAuthorize("isAuthenticated()")
    @RequestMapping(value = "/save", method = RequestMethod.POST)
    public ModelAndView saveRequest(@Valid @ModelAttribute("memberrequest") MemberRequest mr, BindingResult result, HttpSession session) {

        session.setAttribute("phone", mr.getPhonenumber());

        mr.setWelfare((String)session.getAttribute("welfare"));
        mr.setSchool((String)session.getAttribute("school"));
        mr.setTitle((String)session.getAttribute("title"));
        mr.setDistrict((String)session.getAttribute("district"));
        mr.setName((String)session.getAttribute("name"));
        mr.setFile((String)session.getAttribute("file"));
        mr.setQueue((String)session.getAttribute("queue"));
        mr.setRequestor(getUser());
        mr.setSchool_id((String)session.getAttribute("school_id"));
        mr.setBorough_id((String)session.getAttribute("borough_id"));
        mr.setRetiree((String)session.getAttribute("retiree"));


        if (result.hasErrors()) {
            LOGGER.debug("Pages had errors on it... returning to input page");
            return new ModelAndView("w-question");
        } else {

我的Spring控制器中有上述代码,但问题是我需要在Validator运行之前从会话中取出一些值,并将它们移动到BindingResult(Bean)中

有人能做到吗?问题是我在课程中坚持的一些价值观。。请告诉我这是否可行,最好的方法是什么


共 (1) 个答案

  1. # 1 楼答案

    在控制器中,定义用于创建模型属性的方法,并使用@ModelAttribute annotation对其进行注释。 实际上,您不会修改绑定结果对象本身,而是修改验证目标,然后您可以根据需要更改验证器行为以更改绑定结果

    @ModelAttribute("memberrequest")
    public  MemberRequest getMemberRequest(HttpSession session) {
    MemberRequest mr = new MemberRequest();
      mr.setWelfare((String)session.getAttribute("welfare"));
        mr.setSchool((String)session.getAttribute("school"));
        mr.setTitle((String)session.getAttribute("title"));
        mr.setDistrict((String)session.getAttribute("district"));
        mr.setName((String)session.getAttribute("name"));
        mr.setFile((String)session.getAttribute("file"));
        mr.setQueue((String)session.getAttribute("queue"));
        mr.setRequestor(getUser());
        mr.setSchool_id((String)session.getAttribute("school_id"));
        mr.setBorough_id((String)session.getAttribute("borough_id"));
        mr.setRetiree((String)session.getAttribute("retiree"));
    return mr;
    
    }
    

    此方法将在绑定ocures之前调用,但请记住,此方法将在使用@ModelAttribute(“memberrequest”)作为参数的每个Controller方法之前调用