requestmapping query pathvariable parameter mvc how ejemplo java spring spring-mvc

java - query - ¿Cómo obtener param en el método post spring mvc?



spring mvc post parameters (4)

  1. Las anotaciones de primavera funcionarán bien si elimina enctype="multipart/form-data" .

    @RequestParam(value="txtEmail", required=false)

  2. Incluso puede obtener los parámetros del objeto de request .

    request.getParameter(paramName);

  3. Use un form en caso de que la cantidad de atributos sea grande. Será conveniente. Tutorial para que comiences

  4. 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")