Olá, bom dia. Tenho um código de combo dinâmico que traz os dados belezinha. Porém, no segundo combo ele traz alguns caracteres estranhos, tipo asim:
____________
| ipa | --> primeiro combo
----------------
_______________
| |||| |||| centro |
| |||| horto | --> segundo combo
| |||| ideal |
| |||| |||| |||| |
---------------------
e se altero o código jsp, os valores do segundo combo não mudam. Prá mudar eu tenho que apagar o histórico do browser. Outra coisa: se eu mudo o comando de out.println prá out.print no result.jsp, os caracteres estranhos desaparecem das linhas intermediárias mas continuam aparecendo na primeira e última linhas. Alguma dica?
Este é o código (teste.jsp, result.jsp e ConnectionFactory.java):
Teste.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<META name="GENERATOR" content="IBM Software Development Platform">
<META http-equiv="Content-Style-Type" content="text/css">
<LINK href="../theme/Master.css" rel="stylesheet" type="text/css">
<TITLE>teste.jsp</TITLE>
</HEAD>
<BODY>
<script language="javascript">
function list_dados( valor ){
http.open("GET", "result.jsp?id=" + valor, true);
http.onreadystatechange = handleHttpResponse;
http.send(null);
}
function handleHttpResponse(){
campo_select = document.forms[0].subcategoria;
if (http.readyState == 4) {
campo_select.options.length = 0;
results = http.responseText.split(",");
for( i = 0; i < results.length; i++ ){
string = results[i].split( "|" );
campo_select.options[i] = new Option( string[0], string[1] );
}
}
}
function getHTTPObject() {
var req;
try {
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
if (req.readyState == null) {
req.readyState = 1;
req.addEventListener("load", function () {
req.readyState = 4;
if (typeof req.onReadyStateChange == "function")
req.onReadyStateChange();
}, true);
}
return req;
}
if (window.ActiveXObject) {
var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
for (var i = 0; i < prefixes.length; i++) {
try {
req = new ActiveXObject(prefixes[i] + ".XmlHttp");
return req;
} catch (ex) {};
}
}
} catch (ex) {}
alert("XmlHttp Objects not supported by client browser");
}
var http = getHTTPObject();
</SCRIPT>
<%@ page language="java" import="java.sql.Connection" %>
<%@ page language="java" import="java.sql.PreparedStatement" %>
<%@ page language="java" import="java.sql.ResultSet" %>
<%@ page language="java" import="util.*" %>
<%
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
con = ConnectionFactory.getConnection();
pstm = con.prepareStatement("SELECT * FROM cidade ORDER BY nome ASC");
rs = pstm.executeQuery();
%>
<form name="formulario" method="post" action="">
<select name="categoria" onchange="list_dados( this.value )" >
<option></option>
<%while(rs.next()){
out.print("<option value='"+rs.getInt("id")+"'>"+rs.getString("nome")+"</option>");
}
rs.close();
pstm.close();
con.close();%>
</select></p>
<p><select name="subcategoria">
</select>
</p>
</form>
</BODY>
</HTML>
result.jsp
<%@ page language="java" import="java.sql.Connection" %>
<%@ page language="java" import="java.sql.PreparedStatement" %>
<%@ page language="java" import="java.sql.ResultSet" %>
<%@ page language="java" import="util.*" %>
<%
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
con = ConnectionFactory.getConnection();
pstm = con.prepareStatement("SELECT * FROM bairro " +
" WHERE idCidade = " +request.getParameter("id")+ " ORDER BY nome ASC");
rs = pstm.executeQuery();
while(rs.next()){
//String out = (String)(;
out.println(rs.getString("nome")+"|"+rs.getInt("id")+",");
}
rs.close();
pstm.close();
con.close();
%>
ConnectionFactory.java
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionFactory {
public static Connection getConnection() throws SQLException {
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Conectando ao banco");
return DriverManager.getConnection("jdbc:mysql://localhost/dynamic",
"root", "admin");
} catch (ClassNotFoundException e) {
throw new SQLException(e.getMessage());
}
}
}