【问题标题】:Spring MVC Neither BindingResult nor plain target object for bean name using ModelAndView and Form tagSpring MVC 既不是 BindingResult 也不是使用 ModelAndView 和 Form 标记的 bean 名称的普通目标对象
【发布时间】:2016-12-17 09:28:50
【问题描述】:

即使我在这里阅读了一些问题和答案,我似乎也无法解决这个问题。我正在使用 spring mvc 并尝试制作会员信息编辑表单。

这是错误信息。

Neither BindingResult nor plain target object for bean name 'id' available as request attribute

我正在使用 Member.vo,它已经包含了所有需要的 getter 和 setter。

这是控制器。第一个是获取会员信息

@RequestMapping(value = "/setting", method = RequestMethod.GET)
    public String setting(HttpSession httpSession){

    String s_id = (String) httpSession.getAttribute("s_id");
    ModelAndView mav = new ModelAndView("memberedit");

     if(s_id !=null){
        Member member = membermapper.memberEdit(s_id);
        mav.addObject("command", member); }

return "setting"; }

这个正在上传会员的新信息

@RequestMapping(value = "/membereditadd", method = RequestMethod.POST)
     public String memberEdit(Model model, HttpSession httpSession){
        Member member = new Member();
        membermapper.editForm(member);

        String s_url = (String) httpSession.getAttribute("s_url");
        model.addAttribute("command", new Member());

        return "redirect:"+s_url;

    }

这是setting.jsp

<form action="membereditadd" commandName="command" method="post" name="form">

<label for="id">id</label>
 <form:input class="form-styling" type="text" path="id" />

 <label for="pw">password</label>
 <form:input class="form-styling" type="text" path="pw"/>

 <label for="email">e-mail</label>
 <form:input class="form-styling" type="text" path="email"/> 

        <input type="submit" class="btn-signin" value="submit">

     </form> 

【问题讨论】:

    标签: jsp spring-mvc model-view-controller javabeans


    【解决方案1】:

    这里有各种各样的问题。例如,您在 GET 处理程序中创建了一个 ModelAndView,然后返回一个纯字符串。您需要返回 ModelAndView。

    我已经整理了一下。以下期望您的 JSP 被命名为 editMember.jsp

    GET 处理程序:

    /**
      * Spring MVC Controller. Loads an existing Member, sets it in the Model 
      * and forwards to the edit member page.
      *
      */
    @RequestMapping(value = "/editMember", method = RequestMethod.GET)
    public ModelAndView loadEditMemberForm(HttpSession httpSession){
    
        String s_id = (String) httpSession.getAttribute("s_id");
        ModelAndView mav = new ModelAndView("editMember");
    
         if(s_id != null){
            Member member = membermapper.memberEdit(s_id);
            mav.addObject("member", member); 
          }
    
        return mav; 
    }
    

    POST 处理程序:

    /**
      * Spring MVC Controller. Handles form submit. Framework will automatically
      * bind for fields with path X to Member fields named X assuming corressponding
      * setter setX() is present.
      *
      */
    @RequestMapping(value = "/editMember", method = RequestMethod.POST)
    public String editMember(ModelAttribte("member") member, HttpSession httpSession, RedirectAttributes ra){
        Member member = new Member();
        membermapper.editForm(member);
    
        String s_url = (String) httpSession.getAttribute("s_url");
    
        //if you are using a redirect 
        //then you need to use RedirectAttributes
        //this makes the Member available to next view
        ra.addFlashAttribute("member", member);
    
        return "redirect:"+s_url;
    }
    

    更新表格。使用 'modelAttribute' 而不是 'command'。

    <form:form modelAttribute="member" method="post">
    
        <label for="id">id</label>
        <form:input class="form-styling" type="text" path="id" />
    
        <label for="pw">password</label>
        <form:input class="form-styling" type="text" path="pw"/>
    
        <label for="email">e-mail</label>
        <form:input class="form-styling" type="text" path="email"/> 
    
        <input type="submit" class="btn-signin" value="submit">
    </form:form>
    

    【讨论】:

      猜你喜欢
      • 2013-05-23
      • 2020-11-16
      • 1970-01-01
      • 2020-02-21
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      相关资源
      最近更新 更多