内容简介:代码日志版权声明:翻译自:http://stackoverflow.com/questions/20616319/the-request-sent-by-the-client-was-syntactically-incorrect-spring-mvc-jdbc-te
我是Spring MVC的新手.
运行我的项目时,我遇到错误
错误 – 客户端发送的请求在语法上不正确.
我有一个实体类PatientInfo.
我的jsp页面是demo1.
我的控制器是病人控制器.
我想要实现的功能是将值插入数据库.
但是我无法在控制器中调用我的函数(add-update2).
demo1.jsp
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%> <html> <head> <title>Registration Form</title> </head> <body> <h2 align="center">Full Registration Form</h2> <hr /> <table align="center" cellpadding="5" cellspacing="5"> <form:form modelAttribute="patientInfo" method="POST" action="add-update2"> <tr> <td> First Name</td> <td><form:input path="firstName"/></td> </tr> <tr> <td>Middle Name</td> <td><form:input path="middleName" /></td> </tr> <tr> <td>Last Name</td> <td><form:input path="lastName"/> </td> </tr> <tr> <td>Age</td> <td><form:input path="age" /></td> </tr> <tr> <td>Gender</td> <td><form:select path="gender"> <form:option value="" label="Select Gender" /> <form:options items="${genderList}" itemLabel="gender" itemValue="gender" /> </form:select></td> </tr> <tr> <td>Marital Status</td> <td><form:select path="maritalStatus"> <form:option value="" label="Select Marital Status" /> <form:options items="${maritalList}" itemLabel="maritalstatus" itemValue="maritalstatus" /> </form:select></td> </tr> <tr> <td>Nationality</td> <td><form:select path="nationality"> <form:option value="" label="Select Nationality" /> <form:options items="${nationalityList}" itemLabel="country" itemValue="country" /> </form:select></td> </tr> <tr name="tstest"> <td>Date Of Birth</td> <td><form:input path="dateOfBirth" name="timestamp" value=""/> <a href="javascript:show_calendar('document.tstest.timestamp', document.tstest.timestamp.value);"><img src="../images/cal.gif" width="16" height="16" border="0" alt="Click Here to Pick up the timestamp"></a> </td> </tr> <tr> <td>E-mail</td> <td><form:input path="email"/></td> </tr> <tr> <td>Blood Group</td> <td><form:select path="bloodGroup"> <form:option value="" label="Select Blood Group" /> <form:options items="${bloodList}" itemLabel="bloodgroupname" itemValue="bloodgroupname" /> </form:select></td> </tr> <tr> <td><input type="submit" value="submit"/></td> </tr> </form:form> </table> </body> </html>
Controller-PatientController.java
package com.app.ehr.api; import com.app.ehr.domain.Bloodgroup; import com.app.ehr.domain.Gendertype; import com.app.ehr.entities.Patientinfo; import com.app.ehr.domain.Maritalstatus; import com.app.ehr.domain.Nationality; import com.app.ehr.model.Patient; import com.app.ehr.service.PatientService; import org.springframework.stereotype.Controller; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class PatientController { public PatientService patientService; @Autowired public PatientController(PatientService patientService){ this.patientService = patientService; } @RequestMapping(value="/", method= RequestMethod.GET) public String index(ModelMap map) { return "index"; } @RequestMapping(value="/full-reg", method= RequestMethod.GET) public String fullreg(ModelMap map,Patientinfo patientInfo) { List<Bloodgroup> bloodList = new ArrayList<Bloodgroup>(); List<Gendertype> genderList = new ArrayList<Gendertype>(); List<Nationality> nationalityList = new ArrayList<Nationality>(); List<Maritalstatus> maritalList = new ArrayList<Maritalstatus>(); bloodList=patientService.getAllBloodgroup(); genderList= patientService.getAllGendertype(); nationalityList=patientService.getAllNationality(); maritalList=patientService.getAllMaritalstatus(); for(int i=0;i<bloodList.size();i++) { System.out.println("---------------------Controller"+bloodList.get(i)); } // map.addAttribute("hello", "Hello Spring from Netbeans!!"); map.addAttribute("patientInfo", patientInfo); map.addAttribute("bloodList", patientService.getAllBloodgroup()); map.addAttribute("genderList", patientService.getAllGendertype()); map.addAttribute("maritalList", patientService.getAllMaritalstatus()); map.addAttribute("nationalityList", patientService.getAllNationality()); return "demo1"; } @RequestMapping(value="/add-update2", method= RequestMethod.POST) public String addUpdate(@ModelAttribute("patientInfo") Patientinfo patientInfo) { System.out.println("----------------------------------------- From Controller------------------------------------------------"); //patientService.addPatient(patientInfo); return "redirect:/full-reg"; } }
实体类 – PatientInfo.java
package com.app.ehr.entities; import java.io.Serializable; import java.math.BigInteger; import java.util.Date; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; /** * * @author HP LAPTOP */ @Entity @Table(name = "patientinfo") @NamedQueries({ @NamedQuery(name = "Patientinfo.findAll", query = "SELECT p FROM Patientinfo p")}) public class Patientinfo implements Serializable { private static final long serialVersionUID = 1L; @Id @Basic(optional = false) @Column(name = "PatientKey") private Long patientKey; @Column(name = "PatientMRNumber") private String patientMRNumber; @Column(name = "IntPrimaryPhysicianKey") private BigInteger intPrimaryPhysicianKey; @Column(name = "FirstName") private String firstName; @Column(name = "MiddleName") private String middleName; @Column(name = "LastName") private String lastName; @Column(name = "Age") private Short age; @Column(name = "Gender") private String gender; @Column(name = "Nationality") private String nationality; @Column(name = "DateOfBirth") @Temporal(TemporalType.TIMESTAMP) private Date dateOfBirth; @Column(name = "MaritalStatus") private String maritalStatus; @Column(name = "Occupation") private String occupation; @Column(name = "AnnualIncome") private String annualIncome; @Column(name = "BloodGroup") private String bloodGroup; @Column(name = "Email") private String email; @Column(name = "ModeOfPayment") private String modeOfPayment; @Column(name = "ModeOfPaymentAlt") private String modeOfPaymentAlt; @Column(name = "ExtPrimaryPhysicianName") private String extPrimaryPhysicianName; @Column(name = "ExtPrimaryPhysicianPhoneNumber") private String extPrimaryPhysicianPhoneNumber; @Column(name = "IsDeleted") private Boolean isDeleted; @Column(name = "Meta_CreatedByUser") private String metaCreatedByUser; @Column(name = "Meta_UpdatedDT") @Temporal(TemporalType.TIMESTAMP) private Date metaUpdatedDT; @Column(name = "Meta_CreatedDT") @Temporal(TemporalType.TIMESTAMP) private Date metaCreatedDT; public Patientinfo() { } public Patientinfo(Long patientKey) { this.patientKey = patientKey; } public Long getPatientKey() { return patientKey; } public void setPatientKey(Long patientKey) { this.patientKey = patientKey; } public String getPatientMRNumber() { return patientMRNumber; } public void setPatientMRNumber(String patientMRNumber) { this.patientMRNumber = patientMRNumber; } public BigInteger getIntPrimaryPhysicianKey() { return intPrimaryPhysicianKey; } public void setIntPrimaryPhysicianKey(BigInteger intPrimaryPhysicianKey) { this.intPrimaryPhysicianKey = intPrimaryPhysicianKey; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getMiddleName() { return middleName; } public void setMiddleName(String middleName) { this.middleName = middleName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public Short getAge() { return age; } public void setAge(Short age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getNationality() { return nationality; } public void setNationality(String nationality) { this.nationality = nationality; } public Date getDateOfBirth() { return dateOfBirth; } public void setDateOfBirth(Date dateOfBirth) { this.dateOfBirth = dateOfBirth; } public String getMaritalStatus() { return maritalStatus; } public void setMaritalStatus(String maritalStatus) { this.maritalStatus = maritalStatus; } public String getOccupation() { return occupation; } public void setOccupation(String occupation) { this.occupation = occupation; } public String getAnnualIncome() { return annualIncome; } public void setAnnualIncome(String annualIncome) { this.annualIncome = annualIncome; } public String getBloodGroup() { return bloodGroup; } public void setBloodGroup(String bloodGroup) { this.bloodGroup = bloodGroup; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getModeOfPayment() { return modeOfPayment; } public void setModeOfPayment(String modeOfPayment) { this.modeOfPayment = modeOfPayment; } public String getModeOfPaymentAlt() { return modeOfPaymentAlt; } public void setModeOfPaymentAlt(String modeOfPaymentAlt) { this.modeOfPaymentAlt = modeOfPaymentAlt; } public String getExtPrimaryPhysicianName() { return extPrimaryPhysicianName; } public void setExtPrimaryPhysicianName(String extPrimaryPhysicianName) { this.extPrimaryPhysicianName = extPrimaryPhysicianName; } public String getExtPrimaryPhysicianPhoneNumber() { return extPrimaryPhysicianPhoneNumber; } public void setExtPrimaryPhysicianPhoneNumber(String extPrimaryPhysicianPhoneNumber) { this.extPrimaryPhysicianPhoneNumber = extPrimaryPhysicianPhoneNumber; } public Boolean getIsDeleted() { return isDeleted; } public void setIsDeleted(Boolean isDeleted) { this.isDeleted = isDeleted; } public String getMetaCreatedByUser() { return metaCreatedByUser; } public void setMetaCreatedByUser(String metaCreatedByUser) { this.metaCreatedByUser = metaCreatedByUser; } public Date getMetaUpdatedDT() { return metaUpdatedDT; } public void setMetaUpdatedDT(Date metaUpdatedDT) { this.metaUpdatedDT = metaUpdatedDT; } public Date getMetaCreatedDT() { return metaCreatedDT; } public void setMetaCreatedDT(Date metaCreatedDT) { this.metaCreatedDT = metaCreatedDT; } @Override public int hashCode() { int hash = 0; hash += (patientKey != null ? patientKey.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Patientinfo)) { return false; } Patientinfo other = (Patientinfo) object; if ((this.patientKey == null && other.patientKey != null) || (this.patientKey != null && !this.patientKey.equals(other.patientKey))) { return false; } return true; } @Override public String toString() { return "com.app.ehr.entities.Patientinfo[ patientKey=" + patientKey + " ]"; } }
我认为问题是,Spring不知道如何反序列化您的浏览器客户端在提交以下输入字段时发送的日期
<tr name="tstest"> <td>Date Of Birth</td> <td><form:input path="dateOfBirth" name="timestamp" value=""/> <a href="javascript:show_calendar('document.tstest.timestamp', document.tstest.timestamp.value);"><img src="../images/cal.gif" width="16" height="16" border="0" alt="Click Here to Pick up the timestamp"></a> </td> </tr>
Spring不知道如何获取您输入该字段的值并将其转换为Date对象.您需要注册一个PropertyEditor.例如,将以下内容添加到您的@Controller类中
@InitBinder public void initBinder(WebDataBinder binder) { SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); sdf.setLenient(true); binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf, true)); }
显然,将SimpleDateFormat更改为客户端发送的任何内容.
在相关的说明中,您将通过发送重定向发送302响应
return "redirect:/full-reg";
请记住,请求和模型属性仅在一个请求的持续时间内生效.因此,当您的客户端将请求发送到full-reg时,您发送的表单输入参数最初都不存在.你应该重新考虑你如何做到这一点.
代码日志版权声明:
翻译自:http://stackoverflow.com/questions/20616319/the-request-sent-by-the-client-was-syntactically-incorrect-spring-mvc-jdbc-te
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Swift语法快速入门(一)之 Swift基础语法
- 在ES6中使用扩展语法有什么好处?它与rest语法有什么不同?
- Python 基础语法
- go语法
- JPQL 语言语法
- reStructuredText简明语法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
首席产品官2 从白领到金领
车马 / 机械工业出版社 / 79元
《首席产品官》共2册,旨在为产品新人成长为产品行家,产品白领成长为产品金领,最后成长为首席产品官(CPO)提供产品认知、能力体系、成长方法三个维度的全方位指导。 作者在互联网领域从业近20年,是中国早期的互联网产品经理,曾是周鸿祎旗下“3721”的产品经理,担任CPO和CEO多年。作者将自己多年来的产品经验体系化,锤炼出了“产品人的能力杠铃模型”(简称“杠铃模型”),简洁、直观、兼容性好、实......一起来看看 《首席产品官2 从白领到金领》 这本书的介绍吧!