java - query - ¿Cómo obtener param en el método post spring mvc?
spring mvc post parameters (4)
Las anotaciones de primavera funcionarán bien si elimina
enctype="multipart/form-data"
.@RequestParam(value="txtEmail", required=false)
Incluso puede obtener los parámetros del objeto de
request
.request.getParameter(paramName);
Use un form en caso de que la cantidad de atributos sea grande. Será conveniente. Tutorial para que comiences
Configure la resolución de varias partes si desea recibir
enctype="multipart/form-data"
.<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="250000"/> </bean>
Consulte la documentación de Spring .
Estoy usando spring mvc. Y no puedo obtener el parámetro de url cuando method = post. Pero cuando cambio el método a GET, entonces puedo obtener todos los param.
Esta es mi forma:
<form method="POST" action="http://localhost:8080/cms/customer/create_customer" id="frmRegister" name ="frmRegister" enctype="multipart/form-data">
<input class ="iptRegister" type="text" id="txtEmail" name="txtEmail" value="" />
<input class ="iptRegister" type="password" id="txtPassword" name="txtPassword" value="" />
<input class ="iptRegister" type="text" id="txtPhone" name="txtPhone" value="" />
<input type="button" id="btnRegister" name="btnRegister" value="Register" onclick="" style="cursor:pointer"/>
</form>
Este es mi controlador:
@RequestMapping(value= "/create_customer", method = RequestMethod.POST)
@ResponseBody
public String createCustomer(HttpServletRequest request,
@RequestParam(value="txtEmail", required=false) String email,
@RequestParam(value="txtPassword", required=false) String password,
@RequestParam(value="txtPhone", required=false) String phone){
ResultDTO<String> rs = new ResultDTO<String>();
rs.setStatus(IConfig.SHOW_RESULT_SUCCESS_ON_MAIN_SCREEN);
try{
Customer c = new Customer();
c.setEmail(email);
c.setPassword(password);
c.setPhone(phone);
customerService.insert(c);
rs.setData("Insert success");
}catch(Exception ex){
log.error(ex);
rs.setStatus(IConfig.SHOW_RESULT_ERROR_ON_MAIN_SCREEN);
rs.setData("Insert failure");
}
return rs.toString();
}
¿Cómo puedo resolver esto?
Cuando quiero obtener todos los parámetros de POST estoy usando el siguiente código,
@RequestMapping(value = "/", method = RequestMethod.POST)
public ViewForResponseClass update(@RequestBody AClass anObject) {
// Source..
}
Estoy usando la anotación @RequestBody
para las solicitudes http post / put / delete en lugar de @RequestParam
que lee los parámetros GET.
Deberías usar @RequestParam
en esos recursos con method = RequestMethod.GET
Para publicar los parámetros, debe enviarlos como el cuerpo de la solicitud. Un cuerpo como JSON u otra representación de datos dependerá de su implementación (es decir, consumir y producir MediaType
).
Normalmente, multipart / form-data se usa para cargar archivos.
También funciona si cambias el tipo de contenido
<form method="POST"
action="http://localhost:8080/cms/customer/create_customer"
id="frmRegister" name="frmRegister"
enctype="application/x-www-form-urlencoded">
En el controlador también agregue el valor del encabezado de la siguiente manera:
@RequestMapping(value = "/create_customer", method = RequestMethod.POST, headers = "Content-Type=application/x-www-form-urlencoded")