我有一个实体,它有两个属性作为对象(Empresa
和Ciudad
)。
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;
}
}
我想插入" Representante"来自.jsp
的实体,其中包含表单内的选择。我在下面显示。
<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
未激活。它返回一个错误:&#34;客户端发送的要求在语法上是不正确的&#34;。我相信错误是在使用参数&#34; path&#34;。
答案 0 :(得分:0)
表单中的数据无法使用标题“Accept = application / json”发布。您必须在Controller函数中使用@RequestParams将表单中的数据传递到后端控制器函数。此外,enctype参数应具有“multipart / form-data”作为其值。
<form:form method="post" action="fileupload" enctype="multipart/form-data"
id="uploadForm" >Input Elements Here</form:form>
在控制器端,您需要配置控制器,如:
public void TestController(@RequestParam("email") String email, ...) { // do your thing here }