Retornando dados para jsp

0 respostas
P

Olah amigos do GUJ.
A minha duvida parece a principio muito simples.
Eis aqui uma explicacao da mesma.

Tenho uma jsp capaz de obter dados atraves de um Vector ( dados referente a paises ) para um elemento select.
Seria a ideia de no select ter os dados referente a cada pais.(Brasil, Paraguai, etc…)
Bem, a logica seria q, quando o usuario selecionasse um país (por exemplo Brasil) retornassem estados referentes a este país (por exemplo Sao Paulo, Parana…etc).
O q me intriga eh q a jsp q uso obtem os dados referentes ao País… (ateh ai tudo bem)atraves de um bean de uma classe q criei (Nacionalidade.java). Porem quando uso o id referente ao País selecionado para setar um metodo em minha proprica classe (Nacionalidade.jsp), ele nao retorna os dados…(retorna null). O intrigante tambem q se eu usar uma outra class tipo (Nacionalidade2.java) e utiliza-la a mesma como um bean ela consegue setar o id do país…e conseguentemente retornar os estados relacionados…

Irei inserir o codigo das minha implementacoes para se possivel , alguem possa me ajudar.

Agradeço desde jah pela atencao de todos. (Gostaria d dize q uso as plataformas Tomcat4, jdk1.3, e o DB access)

Obs 1: Este codigo retorna null na <option> em vez dos Estados

< – codigo da index.jsp -->

<html>

<head>

<title>:: INDEX ::</title>

<script language=“JavaScript”>

<!–

function setarNacionalidade() {

var ID_Nac = document.frmCadastro.Nacionalidade.value;

document.location = “<a href="http://localhost:8080/RH/jsp/index.jsp?Nacionalidade=">http://localhost:8080/RH/jsp/index.jsp?Nacionalidade=</a>”+ ID_Nac;

}

//–>

</script>

</head>
<body>

<jsp:useBean id=“oNac” scope=“page” class=“rh.sistema.db.Nacionalidade”/>

<jsp:useBean id=“oNac2” scope=“page” class=“rh.sistema.db.Nacionalidade2”/>

<%@ page import=java.util.Vector%>
<%

// obtem o value do elemento <selece name=Nacionalidade> executada em cada refresh

String valueIDNac = request.getParameter(Nacionalidade);

%>

<%
Vector vNac = new Vector();

vNac = oNac.getIDNac_Pais();

int size = vNac.size();
int divize = size / 2;

String[] ID_Nacionalidade = new String[divize];

String Pais[] = new String[divize];

%>

<form name=“frmCadastro”>

<select name=“Nacionalidade” onchange=“setarNacionalidade()”>

<%if( valueIDNac == null ) {%>

<option value=“none”>Escolha um Pais</option>

<%

for(int i = 0; i < size; i++) {

ID_Nacionalidade[0] = (String)vNac.get(i);

i++;

Pais[0] = (String)vNac.get(i);

%>

<option value="<%= ID_Nacionalidade[0]%>"><%= Pais[0]%></option>

<%

}

%>

<%} else if( valueIDNac.equals(1) ) {

oNac.setIDNac(valueIDNac); // aqui retorna null em vez do Estado

%>

<option value="<%=valueIDNac%>"><%=oNac.getPais()%></option>

<%

%>

<%} else if( valueIDNac.equals(2) ) {

oNac.setIDNac(valueIDNac); // aqui retorna null em vez do Estado
%&gt;
&lt;option value="&lt;%=valueIDNac%&gt;"&gt;&lt;%=oNac.getPais()%&gt;&lt;/option&gt;
&lt;%
}

%>

</select>

</form>

</body>
</html>

< – codigo da Nacionalidade.java -->

package rh.sistema.db;

import java.sql.*;
import java.util.Vector;

public class Nacionalidade extends DB_Conexao {

private Connection con;

Vector vreturn;

int ID_Nacionalidade = 0;

String Pais = null;
public Nacionalidade() {
	con = super.abrirConexao();
}

//// Vector retornado representando o ID_Nacionalidade e Pais //////
public Vector getIDNac_Pais() {
	vreturn = new Vector();
	try {			
		vreturn = this.findNacionalidade();
	}
	catch(Exception e) {
		System.out.println("Erro d vector -"+ e);
	}
	return vreturn;
}

///// Vector retornando o ID_Nacionalidade e Pais /////
public Vector findNacionalidade() throws Exception {
	ResultSet rs = null;
	Statement stmt = con.createStatement();
	
	rs = stmt.executeQuery("select ID_Nacionalidade,Pais from Nacionalidade");
	Vector v = new Vector();
	
	while(rs.next()) {
		v.addElement(rs.getString("ID_Nacionalidade"));
		v.addElement(rs.getString("Pais"));
	}
	
	
	rs.close();
	stmt.close();
	con.close();
	super.fecharConexao();
	
	return v;
}

//// seta a variavel ID_Nacionalidade /////
public void setIDNac(String newVal) {
	ID_Nacionalidade = Integer.parseInt(newVal);
	if(ID_Nacionalidade == 1 || ID_Nacionalidade == 2) {
		try {
			this.setIDNacionalidade();
		}
		catch(Exception e) {
			System.out.println("Erro - "+ e);
		}
	}
}

//// retorna o Pais /////
public String getPais() {
	return Pais;
}

//// retorna o Pais conforme o valor passado por ID_Nacionalidade /////
public void setIDNacionalidade() throws Exception {
	ResultSet rs = null;
	PreparedStatement pstmt = con.prepareStatement("select Pais from Nacionalidade where "+
		"ID_Nacionalidade = ?");
	
	pstmt.setInt(1,ID_Nacionalidade);
	
	rs = pstmt.executeQuery();
	if(rs.next()) {
		Pais = rs.getString("Pais");
	}
	
	rs.close();
	pstmt.close();
	super.fecharConexao();
}

//////// main //////////////

static void main(String args[]) {
	Nacionalidade oNac = new Nacionalidade();
	/*try {
		Vector v = new Vector();
		v = oNac.getIDNac_Pais();
		System.out.println(v.get(1));
		int size = v.size();
		int divide = size / 2;
		
		String[] ID_Nacionalidade = new String[divide];
		String[] Pais = new String[divide];
		
		for(int i=0; i&lt;size; i++) {
			ID_Nacionalidade[0] = (String) v.get(i);
			i++;
			Pais[0] = (String) v.get(i);
			System.out.println(ID_Nacionalidade[0]);
			System.out.println(Pais[0]);
		}
		
	}
	catch(Exception e) {
		System.err.println("Erro com vector - "+ e);
	}*/
	
	
	oNac.setIDNac("1");
	String pais = oNac.getPais();
	System.out.println(pais);		
	
	
}

}

Obs 2: Este codigo retorna os Estados com sucesso

na jsp (index.jsp) eu alterei apenas os trechos para:

<jsp:useBean id=“oNac2” scope=“page” class=“rh.sistema.db.Nacionalidade2”/>

<%} else if( valueIDNac.equals(1) ) {

oNac2.setIDNac(valueIDNac);

%>

<option value="<%=valueIDNac%>"><%=oNac2.getPais()%></option>

<%

%>

<%} else if( valueIDNac.equals(2) ) {

oNac2.setIDNac(valueIDNac);

%>

<option value="<%=valueIDNac%>"><%=oNac2.getPais()%></option>

<%

}

%>

e utilizei outra classe (Nacionalidade2.java)

package rh.sistema.db;

import java.sql.*;
import java.util.Vector;

public class Nacionalidade2 extends DB_Conexao {

private Connection con;

int ID_Nacionalidade = 0;

String Pais = null;
public Nacionalidade2() {
	con = super.abrirConexao();
}


//// seta a variavel ID_Nacionalidade /////
public void setIDNac(String newVal) {
	ID_Nacionalidade = Integer.parseInt(newVal);
	if(ID_Nacionalidade == 1 || ID_Nacionalidade == 2) {
		try {
			this.setIDNacionalidade();
		}
		catch(Exception e) {
			System.out.println("Erro - "+ e);
		}
	}
}

//// retorna o Pais /////
public String getPais() {
	return Pais;
}

//// retorna o Pais conforme o valor passado por ID_Nacionalidade /////
public void setIDNacionalidade() throws Exception {
	ResultSet rs = null;
	PreparedStatement pstmt = con.prepareStatement("select Pais from Nacionalidade where "+
		"ID_Nacionalidade = ?");
	
	pstmt.setInt(1,ID_Nacionalidade);
	
	rs = pstmt.executeQuery();
	if(rs.next()) {
		Pais = rs.getString("Pais");
	}
	
	rs.close();
	pstmt.close();
	super.fecharConexao();
}

//////// main //////////////

static void main(String args[]) {
	Nacionalidade oNac = new Nacionalidade();
			
	oNac.setIDNac("2");
	String pais = oNac.getPais();
	System.out.println(pais);		
	
	
}

}

Criado 23 de novembro de 2002
Respostas 0
Participantes 1