客户端发送的请求在语法上是不正确的. – Spring MVC JDBC模板

栏目: Java · 发布时间: 7年前

内容简介:代码日志版权声明:翻译自: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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Domain-Driven Design

Domain-Driven Design

Eric Evans / Addison-Wesley Professional / 2003-8-30 / USD 74.99

"Eric Evans has written a fantastic book on how you can make the design of your software match your mental model of the problem domain you are addressing. "His book is very compatible with XP. It is n......一起来看看 《Domain-Driven Design》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具