2016-12-17 64 views
0

即使我在這裏閱讀了一些問題和解答,似乎我仍無法解決此問題。我使用spring mvc並試圖創建成員信息編輯表單。Spring MVC無論是BindingResult還是使用ModelAndView和Form標籤的bean名稱的普通目標對象

這是錯誤信息。

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> 

回答

0

有各種各樣的問題在這裏。例如,您在GET處理程序中創建一個ModelAndView,然後返回一個普通的String。您需要返回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> 
相關問題