继上一问题源码
来源:5-5 修改报销单
慕村8269932
2018-08-01 14:37:12
Person_update文件Person_update.jsp
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:include page="top.jsp"/>
<style type="text/css">
div{
text-align:center;/** 设置水平方向居中 */
vertical-align:middle/** 设置垂直方向居中 */
}
</style>
<section id="content" class="table-layout animated fadeIn">
<div class="tray tray-center">
<div class="content-header">
<h2> 修改人员信息 </h2>
<p class="lead"></p>
</div>
<div class="admin-form theme-primary mw1200 center-block" style="padding-bottom: 100px;">
<div class="panel heading-border">
<form:form id="admin-form" name="addForm" action="/person/update" modelAttribute="info" >
<form:hidden path="person.id"/><%--以隐藏域的方式传递人员id--%>
<div class="panel-body bg-light">
<div class="section-divider mt20 mb40">
<span>基本信息</span>
</div>
<div class="section row">
<div class = "col-md-1"><label for ="person.sn">人员编号</label></div>
<div class = "col-md-2">
<form:input path="person.sn" value="" cssClass="gui-input" />
</div>
<div class = "col-md-1"><label for="person.name">姓名</label></div>
<div class = "col-md-2">
<form:input path="person.name" value="" cssClass="gui-input"/>
</div>
<div class = "col-md-1"><label for="person.sex">性别</label></div>
<div class = "col-md-2">
<form:select path="person.sex" items="${slist}" cssClass="gui-input" ></form:select>
</div>
<div class = "col-md-1"><label for="person.nation">民族</label></div>
<div class = "col-md-2">
<form:input path="person.nation" value="" cssClass="gui-input"/>
</div>
</div>
<div class="section row">
<div class = "col-md-1"><label for="person.birthdate">出生日期</label></div>
<div class = "col-md-2">
<form:input type="date" path="person.birthdate" value="" cssClass="gui-input"/>
</div>
<div class = "col-md-1"><label for="person.idcard">身份证号</label></div>
<div class = "col-md-2">
<form:input path="person.idcard" value="" cssClass="gui-input"/>
</div>
<div class = "col-md-1"><label for="person.martial">婚姻状况</label></div>
<div class = "col-md-2">
<form:select path="person.martial" items="${mlist}" cssClass="gui-input"/>
</div>
<div class = "col-md-1"><label for="person.political">政治面貌</label></div>
<div class = "col-md-2">
<form:select path="person.political" items="${plist}" cssClass="gui-input"/>
</div>
</div>
<div class="section row">
<div class = "col-md-1"><label for="person.education">学历</label></div>
<div class = "col-md-2">
<form:select path="person.education" value="" items="${elist}" cssClass="gui-input"/>
</div>
<div class = "col-md-1"><label for="person.household">户口性质</label></div>
<div class = "col-md-2">
<form:select path="person.household" value="" items="${hlist}" cssClass="gui-input"/>
</div>
<div class = "col-md-1"><label for="person.domicile">户口所在地</label></div>
<div class = "col-md-2">
<form:input path="person.domicile" cssClass="gui-input"/>
</div>
<div class = "col-md-1"><label for="person.htelephone">家庭电话</label></div>
<div class = "col-md-2">
<form:input path="person.htelephone" cssClass="gui-input"/>
</div>
</div>
<div class="section row">
<div class = "col-md-1"><label for="person.address">现住址</label></div>
<div class = "col-md-2">
<form:input path="person.address" value="" cssClass="gui-input"/>
</div>
<div class = "col-md-1"><label for="person.telephone">联系电话</label></div>
<div class = "col-md-2">
<form:input path="person.telephone" value="" cssClass="gui-input"/>
</div>
<div class = "col-md-1"><label for="person.email">个人邮箱</label></div>
<div class = "col-md-2">
<form:input path="person.email" value="" cssClass="gui-input"/>
</div>
<div class = "col-md-1"><label for="person.jobtitle">职称</label></div>
<div class = "col-md-2">
<form:input path="person.jobtitle" value="" cssClass="gui-input"/>
</div>
</div>
<div class="section row">
<div class = "col-md-1"><label for="person.workingyears">工作年限</label></div>
<div class = "col-md-2">
<form:input path="person.workingyears" value="" cssClass="gui-input"/>
</div>
<div class = "col-md-1"><label for="person.contact">紧急联系人</label></div>
<div class = "col-md-2">
<form:input path="person.contact" value="" cssClass="gui-input"/>
</div>
<div class = "col-md-1"><label for="person.ctelephone">联系人电话</label></div>
<div class = "col-md-2">
<form:input path="person.ctelephone" value="" cssClass="gui-input"/>
</div>
<div class = "col-md-1"><label for="person.finalunit">最后任职单位</label></div>
<div class = "col-md-2">
<form:input path="person.finalunit" value="" cssClass="gui-input"/>
</div>
</div>
<div class="section-divider mt20 mb40">
<span> 教育经历 </span>
</div>
<div class="section row" >
<div class = "col-md-2"><label>起始时间</label></div>
<div class = "col-md-2"><label>终止时间</label></div>
<div class = "col-md-2"><label>学校名称</label></div>
<div class = "col-md-2"><label>学院名称</label></div>
<div class = "col-md-2"><label>专业名称</label></div>
<div class = "col-md-1"><label>海外经历</label></div>
<div class = "col-md-1"><label>删除</label></div>
</div>
<div class="section row" id="educations">
<c:forEach items="${info.educations}" varStatus="edu">
<div>
<div class="col-md-2">
<label for="educations[${edu.index}].estartTime" class="field">
<form:hidden path="educations[${edu.index}].id"/>
<form:hidden path="educations[${edu.index}].personId"/>
<form:input type="date" path="educations[${edu.index}].estartTime" cssClass="gui-input" />
</label>
</div>
<div class="col-md-2">
<label for="educations[${edu.index}].efinalTime" class="field">
<form:input type ="date" path="educations[${edu.index}].efinalTime" cssClass="gui-input"/>
</label>
</div>
<div class="col-md-2">
<label for="educations[${edu.index}].sname" class="field">
<form:input path="educations[${edu.index}].sname" cssClass="gui-input"/>
</label>
</div>
<div class="col-md-2">
<label for="educations[${edu.index}].college" class="field">
<form:input path="educations[${edu.index}].college" cssClass="gui-input" />
</label>
</div>
<div class="col-md-2">
<label for="educations[${edu.index}].major" >
<form:input path="educations[${edu.index}].major" cssClass="gui-input" />
</label>
</div>
<div class="col-md-1">
<label for="educations[${edu.index}].overseas" class="field ">
<form:select path="educations[${edu.index}].overseas" cssClass="gui-input" items="${olist}" />
</label>
</div>
<div class="col-md-1"><button type="button" class="button"><i class="fa fa-trash"></i></button></div>
</div>
</c:forEach>
</div>
<div class="section row">
<div class="col-md-11"></div>
<div class="section" >
<div class="col-md-1" >
<button type="button" class="button" id="addEducationButton"> + </button>
</div>
</div>
</div>
<div class="section-divider mt20 mb40">
<span> 工作经历 </span>
</div>
<div class="section row" >
<div class = "col-md-2"><label>起始时间</label></div>
<div class = "col-md-2"><label>终止时间</label></div>
<div class = "col-md-2"><label>单位名称</label></div>
<div class = "col-md-2"><label>岗位名称</label></div>
<div class = "col-md-2"><label>单位地址</label></div>
<div class = "col-md-1"></div>
<div class = "col-md-1"><label>删除</label></div>
</div>
<div class="section row" id="works">
<c:forEach items="${info.works}" varStatus="wor">
<div>
<div class="col-md-2">
<label for="works[${wor.index}].wstartTime" class="field">
<form:hidden path="works[${wor.index}].id"/>
<form:hidden path="works[${wor.index}].personId"/>
<form:input type="date" path="works[${wor.index}].wstartTime" cssClass="gui-input" />
</label>
</div>
<div class="col-md-2">
<label for="works[${wor.index}].wfinalTime" class="field">
<form:input type="date" path="works[${wor.index}].wfinalTime" cssClass="gui-input"/>
</label>
</div>
<div class="col-md-2">
<label for="works[${wor.index}].unitname" class="field">
<form:input path="works[${wor.index}].unitname" cssClass="gui-input"/>
</label>
</div>
<div class="col-md-2">
<label for="works[${wor.index}].wpost" class="field">
<form:input path="works[${wor.index}].wpost" cssClass="gui-input" />
</label>
</div>
<div class="col-md-2">
<label for="works[${wor.index}].waddress" >
<form:input path="works[${wor.index}].waddress" cssClass="gui-input" />
</label>
</div>
<div class="col-md-1"> </div>
<div class="col-md-1"><button type="button" class="button"><i class="fa fa-trash"></i></button></div>
</div>
</c:forEach>
</div>
<div class="section row">
<div class="col-md-11"></div>
<div class="section" >
<div class="col-md-1" >
<button type="button" class="button" id="addWorkButton"> + </button>
</div>
</div>
</div>
<div class="section-divider mt20 mb40">
<span> 职称/资格证书 </span>
</div>
<div class="section row" >
<div class = "col-md-2"><label>职称/资格证书名称</label></div>
<div class = "col-md-2"><label>等级</label></div>
<div class = "col-md-2"><label>获取时间</label></div>
<div class = "col-md-2"><label>备注</label></div>
<div class = "col-md-3"></div>
<div class = "col-md-1"><label>删除</label></div>
</div>
<div class="section row" id="titles">
<c:forEach items="${info.titles}" varStatus="tit">
<div>
<div class="col-md-2">
<label for="titles[${tit.index}].ttitle" class="field">
<form:hidden path="titles[${tit.index}].id"/>
<form:hidden path="titles[${tit.index}].personId"/>
<form:input path="titles[${tit.index}].ttitle" cssClass="gui-input"/>
</label>
</div>
<div class="col-md-2">
<label for="titles[${tit.index}].rank" class="field">
<form:input path="titles[${tit.index}].rank" cssClass="gui-input" />
</label>
</div>
<div class="col-md-2">
<label for="titles[${tit.index}].gettime" class="field">
<form:input type="date" path="titles[${tit.index}].gettime" cssClass="gui-input"/>
</label>
</div>
<div class="col-md-2">
<label for="titles[${tit.index}].remark" >
<form:input path="titles[${tit.index}].remark" cssClass="gui-input" />
</label>
</div>
<div class="col-md-3"></div>
<div class="col-md-1"><button type="button" class="button"><i class="fa fa-trash"></i></button></div>
</div>
</c:forEach>
</div>
<div class="section row">
<div class="col-md-11"></div>
<div class="section" >
<div class="col-md-1" >
<button type="button" class="button" id="addTitleButton"> + </button>
</div>
</div>
</div>
<div class="section-divider mt20 mb40">
<span> 家庭主要成员 </span>
</div>
<div class="section row" >
<div class = "col-md-2"><label>称谓</label></div>
<div class = "col-md-2"><label>姓名</label></div>
<div class = "col-md-2"><label>工作单位</label></div>
<div class = "col-md-2"><label>居住地址</label></div>
<div class = "col-md-3"></div>
<div class = "col-md-1"><label>删除</label></div>
</div>
<div class="section row" id="families">
<c:forEach items="${info.families}" varStatus="fam">
<div>
<div class="col-md-2">
<label for="families[${fam.index}].appellation" class="field">
<form:hidden path="families[${fam.index}].id"/>
<form:hidden path="families[${fam.index}].personId"/>
<form:select path="families[${fam.index}].appellation" cssClass="gui-input" items="${alist}"/>
</label>
</div>
<div class="col-md-2">
<label for="families[${fam.index}].fname" class="field">
<form:input path="families[${fam.index}].fname" cssClass="gui-input" />
</label>
</div>
<div class="col-md-2">
<label for="families[${fam.index}].funit" class="field">
<form:input path="families[${fam.index}].funit" cssClass="gui-input"/>
</label>
</div>
<div class="col-md-2">
<label for="families[${fam.index}].faddress" >
<form:input path="families[${fam.index}].faddress" cssClass="gui-input" />
</label>
</div>
<div class="col-md-3"></div>
<div class="col-md-1"><button type="button" class="button"><i class="fa fa-trash"></i></button></div>
</div>
</c:forEach>
</div>
<div class="section row">
<div class="col-md-11"></div>
<div class="section" >
<div class="col-md-1" >
<button type="button" class="button" id="addFamilyButton"> + </button>
</div>
</div>
</div>
<div class="panel-footer text-right">
<button type="submit" class="button"> 保存 </button>
<button type="button" class="button" onclick="javascript:window.history.go(-1);"> 返回 </button>
</div>
</div>
</form:form>
</div>
</div>
</div>
</section>
<jsp:include page="bottom.jsp"/>
控制台文件PersonController.java
package com.ims.info.controller;
import com.ims.info.biz.PersonBiz;
import com.ims.info.dto.PersonInfo;
import com.ims.info.global.Contant;
import org.apache.log4j.Logger;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
@Controller("personController")
@RequestMapping("/person")
public class PersonController{
private Logger log = Logger.getLogger ( PersonController.class);
/*@InitBinder
public void InitBinder(WebDataBinder binder){
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(true);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}*/
@Resource
private PersonBiz personBiz;
@RequestMapping("/list")
public String list(Map<String,Object> map){
map.put ( "list",personBiz.getAll () );
return "person_list";
}
@RequestMapping("/to_add")
public String toAdd(Map<String,Object> map){
map.put("info",new PersonInfo ());
map.put ( "slist", Contant.getSexs () );
map.put ( "mlist", Contant.getMartials () );
map.put ( "plist", Contant.getPoliticals ());
map.put ( "elist", Contant.getEducations ());
map.put ( "hlist", Contant.getHouseholds () );
map.put ( "olist", Contant.getOverSeas ());
map.put ( "alist",Contant.getAppellations () );
return "person_add";
}
@RequestMapping("/add")
public String add(PersonInfo info){
personBiz.save ( info.getPerson (),info.getEducations (),
info.getWorks (), info.getTitles (),info.getFamilies ());
return "redirect:list";
}
@RequestMapping("/detail")
public String detail(Integer id,Map<String,Object>map){
map.put("person",personBiz.get ( id ));
map.put("educations",personBiz.getEducations ( id));
map.put ( "works",personBiz.getWorks ( id ) );
map.put ( "titles",personBiz.getTitles ( id ) );
map.put ( "families",personBiz.getFamilies ( id ) );
return "person_detail";
}
@RequestMapping(value="/to_update",params = "id")
public String toUpdate(Integer id,Map<String,Object> map){
PersonInfo info = new PersonInfo ();
info.setPerson ( personBiz.get ( id ) );
info.setEducations ( personBiz.getEducations ( id ) );
info.setWorks ( personBiz.getWorks ( id ) );
info.setTitles ( personBiz.getTitles ( id ) );
info.setFamilies ( personBiz.getFamilies ( id ) );
map.put ( "slist", Contant.getSexs () );
map.put ( "mlist", Contant.getMartials () );
map.put ( "plist", Contant.getPoliticals ());
map.put ( "elist", Contant.getEducations ());
map.put ( "hlist", Contant.getHouseholds () );
map.put ( "olist", Contant.getOverSeas ());
map.put ( "alist",Contant.getAppellations () );
map.put ( "info",info );
return "person_update";
}
@RequestMapping("/update")
public String update( PersonInfo info){
personBiz.update ( info.getPerson (),info.getEducations (),
info.getWorks (),info.getTitles (),info.getFamilies ());
return "redirect:detail";
}
@RequestMapping(value = "/remove",params = "id")
public String remove( Integer id){
personBiz.remove ( id );
return "redirect:list";
}
}
1回答
一叶知秋519
2018-08-01
400错误的产生原因:前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装;
错误排查:
建议同学一部分代码一部分代码的检查,例如:只保留页面中基本信息的相关内容,即需要封装到Person类中的属性信息,提交Controller,看是否出现400,如果没有出现400,证明这个类中的属性封装没有问题,,同学可以仿照这种思路一个类一个类的进行排查。
同学首先尝试一下排查错误,如果还有问题,可以再次提问~
祝学习愉快!
相似问题