Foros del Web » Programación para mayores de 30 ;) » Java »

Variables NULL con request.getParameter

Estas en el tema de Variables NULL con request.getParameter en el foro de Java en Foros del Web. Hola a todos, Estoy teniendo un problema con unas variables que envío con la etiqueta submit de vxml y un jsp que las recibe con ...
  #1 (permalink)  
Antiguo 25/07/2012, 12:42
 
Fecha de Ingreso: febrero-2010
Mensajes: 57
Antigüedad: 14 años, 9 meses
Puntos: 1
Pregunta Variables NULL con request.getParameter

Hola a todos,

Estoy teniendo un problema con unas variables que envío con la etiqueta submit de vxml y un jsp que las recibe con request.getParameter, pues las estoy recibendo en NULL.

Esto es el fragmento del archivo VXML que envía las variables al archivo jsp:
Código HTML:
Ver original
  1. <form id="DigaFrase">
  2.        <block>
  3.              <assign name="constante" expr="'Calibra'"/>
  4.              <assign name="IdLlam" expr="callId"/>
  5.              <log expr="'@@ Entro a Diga Frase'"/>
  6.        </block>
  7.        <record name="file" beep="true" dtmfterm="true" maxtime="10s" finalsilence="3s" type="audio/wav;codec=ulaw">
  8.              <prompt>
  9.                <audio src="builtin:prompts/diga_frase.vox"/>
  10.                     <audio src="builtin:prompts/frase_comun.vox"/>
  11.                     <audio src="builtin:prompts/Gato.vox"/>
  12.              </prompt>
  13.              <filled>
  14.                     <log expr="'@@ Grabando la frase:'"/>
  15.              </filled>
  16.        </record>
  17.        <block>
  18.              <!--application/x-www-form-urlencoded-->
  19.              <log expr="'@@ Valor de constante: '+constante"/>
  20.              <log expr="'@@ Valor de genero: '+genero"/>
  21.               <log expr="'@@ Valor de IdLlam: '+IdLlam"/>
  22.              <submit next="http://172.19.136.119:8080/salvar_graba.jsp" method="post" enctype="multipart/form-data" namelist="file constante genero IdLlam"/>
  23.        </block>
  24. </form>

Esto es lo que me manda el Log del interprete de voz y donde se puede ver que si llevan contenido las variables:
2012-07-24/17:31:02.133 METRIC 000A0100-1000103D submit http://172.19.136.119:8080/salvar_graba.jsp|namelist|{"IdLlam":"000A0100-1000103D","constante":"Calibra","genero":"M","file ":"*recording*"}

Y este es el archivo JSP con el que necesito ayuda, porque al parecer no me está recibiendo el contenido o las variables y las pone en NULL:
Código Javascript:
Ver original
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
  3. <meta name="maintainer" content="IVR Genesys VoiceGenie to Record"/>
  4.   <form id="Llama_JSP">
  5.        <block>
  6.              <%@ page import="java.io.*" %>
  7.              <%@ page import="java.sql.*" %>
  8.              <%
  9.                     String saveFile="";
  10.                     String contentType = request.getContentType();
  11.                     if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) {
  12.                            DataInputStream in = new DataInputStream(request.getInputStream());
  13.                            int formDataLength = request.getContentLength();
  14.                            byte dataBytes[] = new byte[formDataLength];
  15.                            int byteRead = 0;
  16.                            int totalBytesRead = 0;
  17.                            while (totalBytesRead < formDataLength)
  18.                                   {
  19.                                         byteRead = in.read(dataBytes, totalBytesRead,formDataLength);
  20.                                         totalBytesRead += byteRead;
  21.                                   }
  22.                            String file = new String(dataBytes);
  23.                            String constante = request.getParameter("constante");
  24.                            String genero = request.getParameter("genero");
  25.                            String IdLlam = request.getParameter("IdLlam");
  26.                            saveFile = file.substring(file.indexOf("filename=\"") + 10);
  27.                            saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
  28.                            saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\""));
  29.                            int lastIndex = contentType.lastIndexOf("=");
  30.                            String boundary = contentType.substring(lastIndex + 1,contentType.length());
  31.                            int pos;
  32.                            pos = file.indexOf("filename=\"");
  33.                            pos = file.indexOf("\n", pos) + 1;
  34.                            pos = file.indexOf("\n", pos) + 1;
  35.                            pos = file.indexOf("\n", pos) + 1;
  36.                            int boundaryLocation = file.indexOf(boundary, pos) - 4;
  37.                            int startPos = ((file.substring(0, pos)).getBytes()).length;
  38.                            int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
  39.                            saveFile="C:\\Calibracion\\"+saveFile;
  40.                            File f = new File(saveFile);
  41.                            FileOutputStream fileOut = new FileOutputStream(f);
  42.                            fileOut.write(dataBytes, startPos, (endPos - startPos));
  43.                            fileOut.flush();
  44.                            fileOut.close();
  45.  
  46.                            String nuevoNombre = constante + "_" + genero + "_" + IdLlam;
  47.                            File newFileName = new File("C:\\Calibracion\\"+nuevoNombre+".wav");
  48.  
  49.                            f.renameTo(newFileName);
  50.  
  51.                     }
  52.              %>
  53.              <audio src="builtin:prompts/graba_satisfac.vox"/>
  54.              <audio src="builtin:prompts/Gracias.vox"/>
  55.        </block>
  56.   </form>
  57. </vxml>

Las etiquetas de VXML las pongo porque es la unica forma en que el interprete de VXML reconoce el archivo jsp, si se las quito me dice que no puede leer el archivo jsp.

El archivo wav me lo genera con el nombre: null_null_null.wav funciona y se escucha perfectamente, lo que quiere decir que la variable file si pasa bien, pero aquí el problema es que las otras no están pasando bien.

Ahora bien, con respecto al atributo enctype="multipart/form-data" de la etiqueta submit, lei en internet que no puede recibir variables jsp con request.getParameter y las pone en NULL; se lo quité y el interprete de VXML en su log me manda un error que dice le hace falta "enctype of multipart/form-data" y creo que lo necesita para pasar el archivo de audio wav.
Pero, si esto es cierto:
1. ¿Porque me está pasando bien la variable file al jsp y lo guarda bien?
2. ¿Cual sería otra función que se podria ocupar para recibir las variables en jsp, en vez de request.getParameter?
3. Si alguien ha pasado por esto o parecido a esto, ¿Podrían pasarme el ejemplo de como se soluciono esto, por fa?


Muchas gracias por tomarse el tiempo para revisar este caso.
Marsh Rangel

Última edición por Marsh_Spider; 25/07/2012 a las 12:58
  #2 (permalink)  
Antiguo 26/07/2012, 01:38
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 3 meses
Puntos: 188
Respuesta: Variables NULL con request.getParameter

Revisa esto:

http://www.forosdelweb.com/f45/error...5/#post4006462

El mensaje nº #4 tiene todo lo que necesitas saber para recuperar tus parámetros de un formulario multipart.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 26/07/2012, 21:42
 
Fecha de Ingreso: febrero-2010
Mensajes: 57
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Variables NULL con request.getParameter

Ya lo solucioné, el problema estaba en la forma en como lo estaba enviando desde el vxml.

Aqui la solución:

<submit expr="'http://172.19.136.119:8080/CalibracionVP/salvar_graba.jsp?IdLlam='+IdLlam+'&amp;NumEmple='+ NumEmple+'&amp;genero='+genero" method="post" enctype="multipart/form-data" namelist="file"/>

Gracias a todos.
Marsh Rangel

Etiquetas: funcion, input, js, null, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:18.