servlet fileupload files example java jsp servlets request apache-commons

java - fileupload - upload file jsp servlet example



Java Servlets y Commons FileUpload getParameter después de que la solicitud sea manejada (2)

Tengo una aplicación en Java EE que utiliza la API de carga de archivos de Apache Commons . Todo va bien hasta el momento, pero tengo una pregunta.

Tengo algún tipo de validación en el lado del servidor: si hay algún problema, tengo que enviar al usuario a la página anterior e informar el problema al usuario. También tengo que cargar los datos en el formulario, pero cuando uso request.getParameter("key") en el JSP, devuelve null .

He probado que la solicitud no está siendo manejada por commons-fileupload y veo el resultado.

Mi pregunta es cómo mantener la request.getParameter("key") y enviarla al cliente una vez que org.apache.commons.fileupload.servlet.ServletFileUpload la solicitud.

<%out.println(request.getParameter("cedula"));%> devuelve null después de que la API maneje la solicitud


1) ¿Por qué usas getParameter lugar de getAttribute

2) Cuando se producen errores de validación, la solicitud se redirige, esto significa que se envía un nuevo objeto de solicitud y debe proporcionar atributos de solicitud nuevamente.

De la misma manera que lo hizo cuando la acción se envía a JSP. Si desea pasar el parámetro, entonces debe proporcionarlo en la action de atributo de la etiqueta <form> .

Parece dependiente del marco pero podrías intentarlo. Tenga en cuenta que en el JSP si usa EL , puede probar ${param} para acceder a los parámetros y ${attr} para acceder a los atributos en lugar de scriplets '' getParameter , si realmente desea pasarlo a través de URL. También hay buen arte en JSTL.


Eso es normal. Toda la solicitud HTTP se envió en un formato diferente que solo puede manejar Apache Commons FileUpload. El request.getParameter("name") no funcionará para ninguno de los parámetros, tampoco los regulares.

Debería utilizar la misma API de Apache Commons FileUpload para extraer los valores de los campos de entrada regulares. Normalmente debería hacer eso cuando la línea item.isFormField() en sus ejemplos de código devuelve true (la extracción del archivo cargado debe hacerse cuando devuelve false , probablemente ya haya implementado esa parte).

Alternativamente, si ya está en Servlet 3.0 (Tomcat 7, Glassfish 3, etc.), también puede usar la anotación @MultipartConfig en el servlet, para que pueda obtener los archivos cargados por request.getPart("name") y continúe utilizando request.getParameter("name") para campos de entrada regulares.

Ver también: