2016-09-16 89 views
0

起初有没有鉴定被命名为骆驼案件和下划线一些bean属性的问题。所以我删除了这些并重新生成了实体类。尽管现在已解决该问题,但在提交以下表单时,它会提供HTTP状态400错误“客户端发送的请求在语法上不正确”。虽然也有类似的问题,我找不到我的答案。Errror提交客户端发送一个表单请求是语法不正确的弹簧DAO

JSP页面

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
     <form:form action="addDistrict" method="POST" modelAttribute="district"> 
        <form:select class="form-control" style="border-radius: 0px" placeholder="ADA Zone" path="adaid"> 
         <c:forEach items="${adas}" var="result"> 
          <form:option value="${result.adaid}">${result.adaname}</form:option> 
         </c:forEach> 
        </form:select> 
        <form:input path="districtid" type="hidden"></form:input> 
        <form:input path="districtname" placeholder="District Name:"></form:input> 
         <button type="submit" class="btn btn-app"><i class="material-icons md-18" style="font-size:1.0em;">mode_edit</i></button> 
       </form:form> 
    </body> 
</html> 

控制器

package edu.cdms.project.dao.impl; 

import edu.cdms.project.dao.BranchDAO; 
import edu.cdms.project.orm.Adazone; 
import edu.cdms.project.orm.Ascenter; 
import edu.cdms.project.orm.District; 
import edu.cdms.project.orm.Ds; 
import java.util.ArrayList; 
import org.hibernate.Query; 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Repository; 

@Repository 
public class BranchDAOImpl implements BranchDAO{ 

    @Autowired 
    private SessionFactory sessionFactory; 

    public Session getSession(){ 
     return sessionFactory.openSession(); 
    } 


    public ArrayList<Adazone> getADAList(){ 
     Session session=getSession(); 
     session.beginTransaction(); 

     Query namedQuery=session.getNamedQuery("Adazone.findAll"); 
     ArrayList<Adazone> adaZones=(ArrayList<Adazone>) namedQuery.list(); 
     session.getTransaction().commit(); 
     session.close(); 
     return adaZones; 
    } 


    public boolean addDistrict(District district) { 
     Session session=getSession(); 
     session.beginTransaction(); 
     session.save(district); 
     session.getTransaction().commit(); 
     session.close(); 
     return false; 
    } 

} 

服务

package edu.cdms.project.service; 

import edu.cdms.project.orm.Adazone; 
import edu.cdms.project.orm.Ascenter; 
import edu.cdms.project.orm.District; 
import edu.cdms.project.orm.Ds; 
import java.util.ArrayList; 

public interface BranchService { 

    public ArrayList<Adazone> getADAList(); 

    public boolean addDistrict(District district); 

} 

实现的服务

package edu.cdms.project.service.impl; 

import edu.cdms.project.dao.BranchDAO; 
import edu.cdms.project.orm.Adazone; 
import edu.cdms.project.orm.Ascenter; 
import edu.cdms.project.orm.District; 
import edu.cdms.project.orm.Ds; 
import edu.cdms.project.service.BranchService; 
import java.util.ArrayList; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 


@Service 
public class BranchServiceImpl implements BranchService{ 

    @Autowired 
    private BranchDAO branchDAO; 


    public ArrayList<Adazone> getADAList() { 
     return branchDAO.getADAList(); 
    } 

    public boolean addDistrict(District district){ 
     return branchDAO.addDistrict(district); 
    } 

} 

DAO

package edu.cdms.project.dao; 

import edu.cdms.project.orm.Adazone; 
import edu.cdms.project.orm.Ascenter; 
import edu.cdms.project.orm.District; 
import edu.cdms.project.orm.Ds; 
import java.util.ArrayList; 

public interface BranchDAO { 

    public ArrayList<Adazone> getADAList(); 

    public boolean addDistrict(District district); 


} 

实施DAO

package edu.cdms.project.contrl; 

import edu.cdms.project.orm.Adazone; 
import edu.cdms.project.orm.Ailist; 
import edu.cdms.project.orm.Ascenter; 
import edu.cdms.project.orm.District; 
import edu.cdms.project.orm.Ds; 
import edu.cdms.project.service.BranchService; 
import java.util.ArrayList; 
import javax.validation.Valid; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 


@Controller 
@RequestMapping("/") 
public class BranchController { 

    @Autowired 
    private BranchService branchService; 


     @RequestMapping(value = "/addDistrict", method = RequestMethod.POST) 
    public String addDistrict(@Valid District district, ModelMap map){ 

     branchService.addDistrict(district); 
     ArrayList<Adazone> adaZones=branchService.getADAList(); 
     map.addAttribute("adas", adaZones); 
     map.addAttribute("district", district); 
     return "test"; 
    } 
} 

ORM Adazone.java

package edu.cdms.project.orm; 

import java.io.Serializable; 
import java.util.List; 
import javax.persistence.Basic; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.FetchType; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.NamedQueries; 
import javax.persistence.NamedQuery; 
import javax.persistence.OneToMany; 
import javax.persistence.Table; 
import javax.validation.constraints.Size; 
import javax.xml.bind.annotation.XmlRootElement; 
import javax.xml.bind.annotation.XmlTransient; 


@Entity 
@Table(name = "adazone") 
@XmlRootElement 
@NamedQueries({ 
    @NamedQuery(name = "Adazone.findAll", query = "SELECT a FROM Adazone a"), 
    @NamedQuery(name = "Adazone.findByAdaid", query = "SELECT a FROM Adazone a WHERE a.adaid = :adaid"), 
    @NamedQuery(name = "Adazone.findByAdaname", query = "SELECT a FROM Adazone a WHERE a.adaname = :adaname")}) 
public class Adazone implements Serializable { 
    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Basic(optional = false) 
    @Column(name = "adaid") 
    private Integer adaid; 
    @Size(max = 50) 
    @Column(name = "adaname") 
    private String adaname; 
    @OneToMany(mappedBy = "adaid", fetch = FetchType.LAZY) 
    private List<Ailist> ailistList; 
    @OneToMany(mappedBy = "adaid", fetch = FetchType.LAZY) 
    private List<District> districtList; 

    public Adazone() { 
    } 

    public Adazone(Integer adaid) { 
     this.adaid = adaid; 
    } 

    public Integer getAdaid() { 
     return adaid; 
    } 

    public void setAdaid(Integer adaid) { 
     this.adaid = adaid; 
    } 

    public String getAdaname() { 
     return adaname; 
    } 

    public void setAdaname(String adaname) { 
     this.adaname = adaname; 
    } 

    @XmlTransient 
    public List<Ailist> getAilistList() { 
     return ailistList; 
    } 

    public void setAilistList(List<Ailist> ailistList) { 
     this.ailistList = ailistList; 
    } 

    @XmlTransient 
    public List<District> getDistrictList() { 
     return districtList; 
    } 

    public void setDistrictList(List<District> districtList) { 
     this.districtList = districtList; 
    } 

    @Override 
    public int hashCode() { 
     int hash = 0; 
     hash += (adaid != null ? adaid.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 Adazone)) { 
      return false; 
     } 
     Adazone other = (Adazone) object; 
     if ((this.adaid == null && other.adaid != null) || (this.adaid != null && !this.adaid.equals(other.adaid))) { 
      return false; 
     } 
     return true; 
    } 

    @Override 
    public String toString() { 
     return "edu.cdms.project.orm.Adazone[ adaid=" + adaid + " ]"; 
    } 

} 

District.java

package edu.cdms.project.orm; 

import java.io.Serializable; 
import java.util.List; 
import javax.persistence.Basic; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.FetchType; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.ManyToOne; 
import javax.persistence.NamedQueries; 
import javax.persistence.NamedQuery; 
import javax.persistence.OneToMany; 
import javax.persistence.Table; 
import javax.validation.constraints.Size; 
import javax.xml.bind.annotation.XmlRootElement; 
import javax.xml.bind.annotation.XmlTransient; 


@Entity 
@Table(name = "district") 
@XmlRootElement 
@NamedQueries({ 
    @NamedQuery(name = "District.findAll", query = "SELECT d FROM District d"), 
    @NamedQuery(name = "District.findByDistrictid", query = "SELECT d FROM District d WHERE d.districtid = :districtid"), 
    @NamedQuery(name = "District.findByDistrictname", query = "SELECT d FROM District d WHERE d.districtname = :districtname")}) 
public class District implements Serializable { 
    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Basic(optional = false) 
    @Column(name = "districtid") 
    private Integer districtid; 
    @Size(max = 50) 
    @Column(name = "districtname") 
    private String districtname; 
    @OneToMany(mappedBy = "districtid", fetch = FetchType.LAZY) 
    private List<Ailist> ailistList; 
    @OneToMany(mappedBy = "districtid", fetch = FetchType.LAZY) 
    private List<Ds> dsList; 
    @JoinColumn(name = "adaid", referencedColumnName = "adaid") 
    @ManyToOne(fetch = FetchType.LAZY) 
    private Adazone adaid; 

    public District() { 
    } 

    public District(Integer districtid) { 
     this.districtid = districtid; 
    } 

    public Integer getDistrictid() { 
     return districtid; 
    } 

    public void setDistrictid(Integer districtid) { 
     this.districtid = districtid; 
    } 

    public String getDistrictname() { 
     return districtname; 
    } 

    public void setDistrictname(String districtname) { 
     this.districtname = districtname; 
    } 

    @XmlTransient 
    public List<Ailist> getAilistList() { 
     return ailistList; 
    } 

    public void setAilistList(List<Ailist> ailistList) { 
     this.ailistList = ailistList; 
    } 

    @XmlTransient 
    public List<Ds> getDsList() { 
     return dsList; 
    } 

    public void setDsList(List<Ds> dsList) { 
     this.dsList = dsList; 
    } 

    public Adazone getAdaid() { 
     return adaid; 
    } 

    public void setAdaid(Adazone adaid) { 
     this.adaid = adaid; 
    } 

    @Override 
    public int hashCode() { 
     int hash = 0; 
     hash += (districtid != null ? districtid.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 District)) { 
      return false; 
     } 
     District other = (District) object; 
     if ((this.districtid == null && other.districtid != null) || (this.districtid != null && !this.districtid.equals(other.districtid))) { 
      return false; 
     } 
     return true; 
    } 

    @Override 
    public String toString() { 
     return "edu.cdms.project.orm.District[ districtid=" + districtid + " ]"; 
    } 

} 

回答

0
在区级

你有Adazone场。在JSP页面中你逝去的不是对象,而是一个Integer值,即=“$ {} result.adaid”

你能不能做以下修改,让我知道,如果这些为你工作。 在JSP页面传递一个对象,而不是一个整数

<c:forEach items="${adas}" var="result"> 
    <form:option value="${result}">${result.adaname}</form:option> 
</c:forEach> 

然后,你必须声明两个转换器

public class IntegerToAdazone implements Converter<Integer, Adazone > { 

    @Override 
    public Adazone convert(Integer source) { 
     Adazone a = new Adazone(source); 
     return a; 
    } 

} 

public class AdazoneToInteger implements Converter<Adazone, Integer> { 

    @Override 
    public Integer convert(Adazone source) { 
     return source.getId(); 
    } 

} 

然后你必须配置的转换服务。看看Spring文档http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html(9.5.5配置ConversionService)

默认ConversionService可以字符串,数字, 枚举,集合,地图和其他常见的类型之间的转换。为了补充或者 用您自己的自定义转换器覆盖默认转换器,请设置 转换器属性。属性值可以实现 Converter,ConverterFactory或GenericConverter接口中的任意一个。

<bean id="conversionService" 
     class="org.springframework.context.support.ConversionServiceFactoryBean"> 
    <property name="converters"> 
     <set> 
      <bean class="example.IntegerToAdazone"/> 
      <bean class="example.AdazoneToInteger"/> 
     </set> 
    </property> 
</bean> 

更改包以上(实施例)作为合适的。 希望这会有所帮助

相关问题