Select com xml

0 respostas
H

Olá galera...

Bem, é o seguinte...
Estou desenvolvendo uma aplicação web e travei na parte de form - select...

Tipo assim, fiz um servlet para acessar o bd mysql e retornar alguns dados em formato xml, acho melhor mostrar, então, esta aí:
package banco;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class for Servlet: Modelos_servlet
 *
 * @web.servlet
 *   name="Modelos_servlet"
 *   display-name="Modelos_servlet" 
 *
 * @web.servlet-mapping
 *   url-pattern="/Modelos_servlet"
 *  
 */
 public class  ModelosServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
    /* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
	public ModelosServlet() {
		super();
	}   	
	
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest arg0, HttpServletResponse arg1)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	    response.setContentType("text/xml");
	    PrintWriter out = response.getWriter();
	    out.println("<?xml version='1.0' encoding='ISO-8859-1' ?>");

		Conexao c = new Conexao();
		c.Conecta();
		Connection conexao = c.conn;
		try {
        PreparedStatement sql = conexao.prepareStatement("select * from modelos, fabricantes");
        ResultSet  resultado = sql.executeQuery();
        out.println("<banco>");
        while (resultado.next()) {
		out.println("<tabela>");	
            out.println("<fabricante>"+resultado.getString("FAB_Nm_fabricante")+ "</fabricante>");
            out.println("<modelo>"+resultado.getString("MOD_Dc_modelo")+ "</modelo>");
		out.println("</tabela>");
        }
        
		out.println("</banco>");
      resultado.close();
		
    } catch (SQLException e) {
       out.println("<erro>"+e.getMessage()+"</erro>");
       out.close();
    }

	}  	
	
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest arg0, HttpServletResponse arg1)
	 */
	protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}   	  	    
}
Ele me traz os resultados no bd do fabricante e modelo... Modifiquei o web.xml para que esse servlet passe os dados para qualquer página que solicitar:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
	xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>proj_camera</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	<servlet>
		<servlet-name>modelosservlet</servlet-name>
		<servlet-class>banco.ModelosServlet</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>modelosservlet</servlet-name>
		<url-pattern>/modelosservlet</url-pattern>
	</servlet-mapping></web-app>
Consegui acessar as informações em uma página de teste que fiz:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<XML ID="dados" src="modelosservlet"></XML>

<TABLE DATASRC=#dados BORDER =1 >
  <THEAD>
	<TR>
		<TD>fabricante</TD>
		<TD>cor</TD>
	</TR>
  </THEAD>
  <tr>
	<td><div datafld="fabricante"></div></td>
	<td><div datafld="modelo"></div></td>

  </tr>
</TABLE>

</body>
</html>
E recebi os resultados, mas...

O grande problema é quando vou usar esses dados que estão em xml em um form, mais especificamente, em um select - option...

Tentei de várias formas colocar esses dados no select para minha página mas não consegui...

Eis a página que tento usar o xml no select:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@taglib uri="/WEB-INF/lib/struts-logic.tld" prefix="logic"%>
<jsp:useBean id="modelos" scope="page" class="banco.Modelos" />
<jsp:setProperty name="modelos" property="*" />
<jsp:useBean id="zebra" scope="page" class="banco.Zebra" />
<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">
<title>Identificação de Veículos</title>
<link rel="stylesheet" href="../estilos.css"><script
	language="javascript" type="text/JavaScript">
   function Validar() {

		if (form1.modelo.value.length == 0) {
		   alert('Por favor digite o modelo do veículo.');
		   form1.modelo.focus();
                   return false;
                }

		if (form1.cor.value.length == 0) {
		   alert('Por favor digite a cor.');
		   form1.cor.focus();
                   return false;
		}
   function carrega(){
       
       dados.recordset.moveFirst(); 
       while (!dados.recordset.EOF) {
          var novo = new Option(dados.recordset('fabricante'));
	      form1.selecionar.add(novo);
          dados.recordset.moveNext();    
       }
    }		
}
 </script>
</head>
<body class="corFundo" onload="carrega();">
<xml id="dados" src="../modelosservlet"></xml>
<TABLE border=0 width="100%" height="100%">
	<tr>
		<td height="2%">
		<div class="estiloTitulo">Identificação de Veículos</div>
		</td>
	</tr>
	<tr>
		<td class="tr" height="2"><%@include file="../Menu/menu.jsp"%></td>
	</tr>
	<tr>
		<td align="center" valign="top"><%-- inicio formulario  --%>
		<form action="" method="post" name="form1" id="form1"
			onSubmit="return Validar();" style="display: none;">
		<table id="tabelaFormulario" width="400" border="1" align="center"
			valign="top" cellpadding="0" cellspacing="0">
			<tr>
				<td class="borda tr">
				<table width="100%" border="0" cellspacing="0" cellpadding="3">
					<tr class="tituloform">
						<td colspan="2" valign="top">
						<table id="tituloForm" width="100%" border="0" cellspacing="0"
							cellpadding="0">
							<tr>
								<td width=60></td>
								<td>
								<div align="center" class="tituloform" id="formularioTitulo"></div>
								</td>
								<td width=60><img align="right" class="dedo" alt="fechar"
									src="../imagens/fechar.gif"
									onClick="form1.style.display='none';"></td>
							</tr>
						</table>
						</td>
					</tr>
					<tr>
						<td width="60" valign="top" class=titulocampo>Modelo:</td>
						<td align=left><input name="modelo" type="text" class="borda"
							maxlength="100"></td>
					</tr>
					<tr>
						<td width="60" valign="top" class=titulocampo>Fabricante:</td>
						<td align=left><select name="selecionar" id="selecionar"
							class="borda">
							<option value="0">-- selecione --</option>
						</select></td>
					</tr>
					<tr>
						<td width="60" valign="top" class=titulocampo>Cor:</td>
						<td align=left><input name="cor" type="text" class="borda"
							maxlength="100"></td>
					</tr>
					<tr>
						<td width="60" class=titulocampo></td>
						<td><input name="Submit" type="submit" class="botao"
							value="Gravar"> <input name="Cancelar" type="button"
							class="botao" onClick="form1.style.display='none';"
							value="Cancelar"></td>
					</tr>
				</table>
				</td>
			</tr>
		</table>
		</form>
		<%-- fim formulario --%><%-- inicio linha incluir/busca --%>
		<table id="tabelaBusca" width="100%" border="0" cellspacing="0"
			cellpadding="0">
			<tr>
				<td align="center" class="paginacao tr"><a href="javascript:void(0)"
					onClick="
                         form1.style.display='block';
                         form1.action='incluir.jsp';
                         formularioTitulo.innerHTML='Incluir Modelo';
                         mostraCodigo.innerHTML='';
                         form1.modelo.value='';
                         form1.fabricante.value='';
                         form1.cor.value='';
                         form1.observacoes.value='';"><b>Incluir</b></a><font
					color="#006699"><b> | Pesquisar: </b></font><input name="destacar"
					type="text" class="texto" size="20" maxlength="20"
					value="<jsp:getProperty name="modelos" property="destacar" />"> <input
					name="Submit2" type="button" class="botao" value="Ok"
					onClick="document.location='index.jsp?destacar='+destacar.value;"></td>
			</tr>
		</table>
		<%-- fim linha incluir/busca --%>
		<table id="tabelaBusca" width="100%" height="100%" border="0"
			cellspacing="0" cellpadding="0" class="borda">
			<tr>
				<td align="center" valign="top" class="corFundo">
				<table border=0 width=100% class="limpar">
					<tr id="linhaTitulos" class="sobreMouse">
						<td width="60">
						<div class="titulocoluna dedo"><logic:equal parameter="campo"
							value="1">
						</logic:equal> Modelo</div>
						</td>
						<td width="140">
						<div class="titulocoluna dedo"><logic:equal parameter="campo"
							value="2">
						</logic:equal> Fabricante</div>
						</td>
						<td width="140">
						<div class="titulocoluna dedo"><logic:equal parameter="campo"
							value="3">
						</logic:equal> Cor</div>
						</td>
						<td width="140">
						<div class="titulocoluna dedo"><logic:equal parameter="campo"
							value="4">
						</logic:equal> Descrição</div>
						</td>
					</tr>
					<logic:iterate id="listar" name="modelos" property="listar">
						<tr id="linhaDados" onmouseover="this.className='selecao';"
							onmouseout="this.className='<jsp:getProperty name="zebra" property="corProxima"/>'"
							align="left" valign="top"
							class="<jsp:getProperty name="zebra" property="corAtual"/>">
							<td class="dados" width="15%"><jsp:getProperty name="listar"
								property="modelo" /></td>
							<td class="dados" width="15%"><jsp:getProperty name="listar"
								property="fabricante" /></td>
							<td class="dados" width="15%"><jsp:getProperty name="listar"
								property="cor" /></td>
							<td class="dados" width="55%"><jsp:getProperty name="listar"
								property="observacoes" /></td>
						</tr>
					</logic:iterate>
				</table>
				<jsp:getProperty name="modelos" property="paginacao" /></td>
			</tr>
		</table>
		</td>
	</tr>
	<tr id="linhaRodape">
		<td height="3%" colspan=2 align="center" class="rodape borda">
		<div>Desenvolvido na Technolog / Soluções em Softwares Ltda.</div>
		</td>
	</tr>

</TABLE>
</body>
</html>
Bem, tem muitas informações aí, mas gostaria que atentassem para o form, para o select...

fiz um código em javascript para tentar, mas nem assim consegui!!!

Se alguém puder me ajudar, seria muito grato...

É isso galera, aguardo o apoio de vcs!!!

Criado 24 de agosto de 2005
Respostas 0
Participantes 1