2017-11-09 3 views
1

객체 (EmpresaCiudad) 인 두 개의 속성을 가진 엔티티가 있습니다."선택"이 작동하지 않는 "형식"의 경로 매개 변수를 가진 객체 전달

package es.dxd.project.model; 

import java.io.Serializable; 
import javax.persistence.*; 


/** 
* The persistent class for the REPRESENTANTE database table. 
* 
*/ 
@Entity 
public class Representante implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column(name="ID_REPRESENTANTE") 
    private long idRepresentante; 

    @Column(name="EMAIL") 
    private String email; 

    @Column(name="NOMBRE") 
    private String nombre; 

    @Column(name="NUM_TELEFONO") 
    private String numTelefono; 

    //bi-directional many-to-one association to Empresa 
    @ManyToOne 
    @JoinColumn(name="ID_EMPRESA") 
    private Empresa empresa; 

    //bi-directional many-to-one association to Ciudad 
    @ManyToOne 
    @JoinColumn(name="ID_SEDE") 
    private Ciudad ciudad; 

    public Representante() { 
    } 

    public long getIdRepresentante() { 
     return this.idRepresentante; 
    } 

    public void setIdRepresentante(long idRepresentante) { 
     this.idRepresentante = idRepresentante; 
    } 

    public String getEmail() { 
     return this.email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public String getNombre() { 
     return this.nombre; 
    } 

    public void setNombre(String nombre) { 
     this.nombre = nombre; 
    } 

    public String getNumTelefono() { 
     return this.numTelefono; 
    } 

    public void setNumTelefono(String numTelefono) { 
     this.numTelefono = numTelefono; 
    } 

    public Empresa getEmpresa() { 
     return this.empresa; 
    } 

    public void setEmpresa(Empresa empresa) { 
     this.empresa = empresa; 
    } 

    public Ciudad getCiudad() { 
     return this.ciudad; 
    } 

    public void setCiudad(Ciudad ciudad) { 
     this.ciudad = ciudad; 
    } 

} 

나는 폼 내부의 선택으로 .jsp에서 "Representante"개체를 삽입 할. 나는 그것을 아래에 보여준다.

<form:form method="post" modelAttribute="representante" 
    action="${pageContext.request.contextPath}/addRepresentante"> 
    <div align="center"> 
     <table> 
      <tr> 
       <th colspan="2" style="text-align: center;">Añadir 
        representante</th> 
      </tr> 
      <tr> 
       <form:hidden path="idRepresentante" /> 
       <td><form:label path="nombre">Nombre:</form:label></td> 
       <td><form:input path="nombre" size="30" maxlength="20"></form:input></td> 
      </tr> 

      <tr> 
       <td><form:label path="numTelefono">Teléfono:</form:label></td> 
       <td><form:input path="numTelefono" size="30" maxlength="20"></form:input></td> 
      </tr> 
      <tr> 
       <td><form:label path="email">Email:</form:label></td> 
       <td><form:input path="email" size="30" maxlength="20"></form:input></td> 
      </tr> 
      <tr> 
       <td>Ciudad:</td> 
       <td><form:select path="ciudad"> 
         <form:option value="NONE" label="Selecciona una ciudad" /> 
         <form:options items="${listaDeCiudades}" itemLabel="nombreCiudad" /> 
        </form:select></td> 
      </tr> 
      <tr> 
       <td><form:label path="empresa">Empresa:</form:label></td> 
       <td><form:select path="empresa"> 
         <form:option value="NONE" label="Selecciona una empresa" /> 
         <form:options items="${listaDeEmpresas}" itemLabel="nombre" 
          itemValue="idEmpresa" /> 
        </form:select></td> 
      </tr> 

      <tr> 
       <td colspan="2"><input type="submit" class="blue-button" 
        value="Insertar" /></td> 

      </tr> 
     </table> 
    </div> 
</form:form> 

마지막으로 나는 양식이 제출 될 때 활성화되는 드라이버를 보여

@RequestMapping(value = "/addRepresentante", method = RequestMethod.POST, headers = "Accept=application/json") 
public String addRepresentante(@ModelAttribute("representante") Representante representante) { 

    if(representante.getIdRepresentante() == 0) { 
     representanteService.addRepresentante(representante); 
    }else{ 
     representanteService.updateRepresentante(representante); 
    } 

    return "redirect:/getAllRepresentantes"; 
} 

문제는 내가 양식을 제출하면, controller이 활성화되지 않는 것입니다. "클라이언트가 보낸 요구 사항이 구문 상 올바르지 않습니다"라는 오류를 반환합니다. 나는 오류가 매개 변수 "경로"와 양식을 통해 개체를 보낼 때라고 생각합니다.

답변

0

양식의 데이터는 "Accept = application/json"헤더로 게시 할 수 없습니다. 컨트롤러 함수에서 @RequestParams를 사용하여 폼에서 백엔드 컨트롤러 함수로 데이터를 가져와야합니다. 또한 enctype 매개 변수의 값으로 "multipart/form-data"가 있어야합니다.

public void TestController(@RequestParam("email") String email, ...) { // do your thing here } 
: 컨트롤러 측면에서
<form:form method="post" action="fileupload" enctype="multipart/form-data" 
    id="uploadForm" >Input Elements Here</form:form> 

, 당신은 같은 컨트롤러를 구성해야