RE:Problemas con includes jsp
ESTE ES EL CÓDIGO QUE VA EN LA JSP QUE SEPARA LOS PARÁMETROS EN UN ARREGLO:
String ruta1 = request.getParameter("ruta");
//Variables para obtener las variables existen en mi cadena
int index;
int fromIndex=0;
int count = 1;
//Creo arreglo para Recorrer
String[][] a;
String variable = null;
String valorVariable = null;
String var = null;
String valor = null;
int igual = 0;
int ampersan = 0;
//Variables para la obtención la posición de donde comienza el primer parámetro
int posicion = 0;
int temp = 0;
int temp2 = 0;
int tmp3 = 0;
//ruta1 relativa que se escribe en el include
String relativa = null;
//Pregunto si la cadena no viene vacía
if((ruta1.length()>0)&&(ruta1!=null)){
posicion = ruta1.toString().indexOf("?");
relativa = ruta1.toString().substring(0,posicion);
System.out.println("ruta1 Relativa : " + relativa);
//Quito la ruta1 relativa y me quedo únicamente con la cadena de parámetros
ruta1 = ruta1.substring(posicion + 1);
System.out.println("ruta1 Parametros: " + ruta1);
while ( (index = ruta1.indexOf('&', fromIndex)) > -1) {
count++;
fromIndex = index + 1;
}
cadena = "<jsp:include page=\""+relativa+"\" flush=\"true\">";
//reviso que vengan por lo menos dos parámetros
if(count!=1){
a = new String[count][2];
for ( int i = 0 ; i < a.length ; i++ ) {
for (int j = 0; j < a[i].length; j++){
if((i==0)&&(j==0)){
//Saco la posición del primer signo de = para sacar el primer nombre del parámetro
temp = ruta1.toString().indexOf("=");
// Saco el primer nombre del parámetro
var = ruta1.toString().substring(0, temp);
a[i][j] = var;
System.out.println(i + " - " + j + " : " + a[i][j]);
}else{
if((i==0)&&(j==1)){
// Saco la posición del primer ampersan para sacar el valor de la variable
temp2 = ruta1.toString().indexOf("&");
// Saco el valor de la variable.
valor = ruta1.toString().substring(temp + 1, temp2);
a[i][j] = valor;
System.out.println(i + " - " + j + " : " + a[i][j]);
//La ruta1 sin los primeros parámetros
tmp3 = ruta1.toString().indexOf("&");
//Reescribo nombre de la ruta1
ruta1 = ruta1.toString().substring(tmp3+1) + "&";
cadena = cadena + "<jsp:param name=\""+var+"\" value=\""+valor+"\"/>";
System.out.println("\n\naqui1: " + var + " : " + valor);
}else{
if(j==0){
//Saco posición del =
igual = ruta1.toString().indexOf("=");
//Saco nombre de la variable
variable = ruta1.toString().substring(0,igual);
a[i][j] = variable;
System.out.println(i + " - " + j + " : " + a[i][j]);
//Reescribo nombre de la ruta1
ruta1= ruta1.toString().substring(igual+1);
}else{
//Saco posición ampersan
ampersan = ruta1.toString().indexOf("&");
//Saco valor de la variable lo que está entre el = y el &
valorVariable = ruta1.toString().substring(0,ampersan);
a[i][j] = valorVariable;
System.out.println(i + " - " + j + " : " + a[i][j]);
//Reescribo nombre de la ruta1
ruta1= ruta1.toString().substring(ampersan+1);
cadena = cadena + "<jsp:param name=\""+variable+"\" value=\""+valorVariable+"\"/>";
System.out.println("\n\naqui3: " + variable + " : " + valorVariable);
}
}
}
}
}
cadena = cadena + "</jsp:include>";
cadena.trim();
System.out.println(" | "+cadena+" | ");
request.setAttribute("cadena",cadena);
request.setAttribute("arreglo", a);
request.setAttribute("relativa", relativa);
System.out.println("\n**********************************************************");
}else{
//Entro a este else cuando trae un sólo parámetro.
System.out.println("avver dkaskdjl");
String[][] b= new String[1][2];
int tempo = ruta1.toString().indexOf("=");
String var2 = ruta1.toString().substring(0,tempo);
b[0][0]= var2;
ruta1 = ruta1.toString().substring(tempo+1);
b[0][1]= ruta1;
cadena = "<jsp:include page=\""+relativa+"\" flush=\"true\">";
cadena = cadena + "<jsp:param name=\""+var2+"\" value=\""+ruta1+"\"/>";
cadena = cadena + "</jsp:include>";
cadena.trim();
request.setAttribute("cadena",cadena);
}
}//cierre del if del count
else{
//Aquí entro cuando la ruta1 viene en nulo ó en vacío.
cadena = "<div class='Titulos'>Ha ocurrido un error por favor comuníquese a soporte técnico.</div>";
cadena.trim();
request.setAttribute("cadena",cadena);
System.out.println("Cadema ELSE : " + cadena);
}
Cómo podrás darte cuenta lo hago de dos maneras. 1.- poniendo la cadena que arme en el request y la otra poniendo el arreglo pero de ninguna de las dos formas funciona.
Y ESTO ES LO QUE ESTÁ EN LA JSP QUE LO OBTIENE:
<%
System.out.println(request.getParameter("ruta"));
String c[][];
c = (String[][])request.getAttribute("arreglo");
int veces = 0;
String variable = null;
String valor = null;
request.getAttribute("arreglo");
%>
<jsp:include page="<%=request.getAttribute("relativa")%>" flush="true"/>
<%
for ( int i = 0 ; i < c.length ; i++ ) {
for (int j = 0; j < c[i].length; j++){
System.out.println("arreglo : " + c[i][j]);
if(j==0){
variable = c[i][j];
System.out.println("Variable: " + c[i][j]);
}else{
valor = c[i][j];
System.out.println("Valor: " + c[i][j]);
}
}//cierre segundo for %>
<jsp:param name="<%=variable%>" value="<%=valor%>"/>
<%
}//cierre primer for
%>
</jsp:include>
ESPERO NO ESTÉ MUY ENREDADO... MUCHAS GRACIAS MARIO.
SALUDOS,
PD. OJALA PUEDAS PASARME TU CORREO DE HOTMAIL PARA AGREGARTE SI NO TE MOLESTA.
GRACIAS :)