Spring @ModelAttributes自动绑定

时间:2017-08-28 02:46:40

标签: spring modelattribute

您好我想使用@ModelAttributes从视图到控制器进行自动绑定。

此jsp页面应发送所有元素,这是个人日程表VO。

<form name="insertFrm" action="myScheduleInsert" method="POST">
                    <ul>
                       <input type="hidden" class="form-control" name="perschd_num" >
                       <li>
                          <label class='control-label'>title</label>
                       <input type="text" class="form-control" name="perschd_title" >
                       </li>
                       <li>
                       <input type="hidden" class="form-control" name="perschd_writer" >
                       <li>
                          <label class='control-label'>start date</label>
                       <input type="date" id="fullYear" class="form-control" name="perschd_start_date"  value="">
                       </li>
                       <li>
                          <label class='control-label'>end date</label>
                       <input type="date"  class="form-control" name="perschd_end_date" >
                       </li>
                       <li>
                          <label class='control-label'>content</label>
                       <input type="text" class="form-control" name="perschd_cont" >
                       </li>
                 </ul>

                 </div>

               <!-- button-->  
               <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                    <input type="submit" class="btn btn-primary">
             </form>

这是我使用 @ModelAttributes PerschdVO perschd 的插入功能的控制器,当我尝试打印全部时,全部为空。

//insertSchedule
   @RequestMapping("/myScheduleInsert")
   public String myScheduleInsert(@ModelAttribute PerschdVO perschdVO ){

       String view="redirect:/professor/mypage/mySchedule";

       *System.out.println(perschdVO);*

       try {
        proService.insertPerschd(perschdVO);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

       return view;
   }

这是PerschdVO

public class PerschdVO {
private int perschd_num;  
private String perschd_title;  
private String perschd_cont; 
private Date perschd_date; 
private String perschd_start_date;  
private String perschd_end_date;  
private String perschd_writer;  //id


public String getPerschd_writer() {
    return perschd_writer;
}
public void setPerschd_writer(String perschd_writer) {
    this.perschd_writer = perschd_writer;
}
public int getPerschd_num() {
    return perschd_num;
}
public void setPerschd_num(int perschd_num) {
    this.perschd_num = perschd_num;
}
public String getPerschd_title() {
    return perschd_title;
}
public void setPerschd_title(String perschd_title) {
    this.perschd_title = perschd_title;
}
public String getPerschd_cont() {
    return perschd_cont;
}
public void setPerschd_cont(String perschd_cont) {
    this.perschd_cont = perschd_cont;
}
public Date getPerschd_date() {
    return perschd_date;
}
public void setPerschd_date(Date perschd_date) {
    this.perschd_date = perschd_date;
}
public String getPerschd_start_date() {
    return perschd_start_date;
}
public void setPerschd_start_date(String perschd_start_date) {
    this.perschd_start_date = perschd_start_date;
}
public String getPerschd_end_date() {
    return perschd_end_date;
}
public void setPerschd_end_date(String perschd_end_date) {
    this.perschd_end_date = perschd_end_date;
}

为什么来自jsp的这些元素与此不匹配?尽管我将jsp文件中的所有名称 PerschdVO 的get()名称相匹配。

如果我像这样修理

public String myScheduleInsert(
            Principal who,
            @RequestParam("perschd_start_date")String perschd_start_date,
            @RequestParam("perschd_end_date")String perschd_end_date,
            @RequestParam("perschd_title")String perschd_title,
            @RequestParam("perschd_cont")String perschd_cont
            ){
        PerschdVO perschdVO = new PerschdVO();
    ...}

可以将来自jsp的数据发送到@Controller,但仍然无法获得有关使用@ModelAttributes的信息。因为如果我使用它总是发生400个坏请求。

0 个答案:

没有答案