Popular combobox em funçao de outro combobox usando JSP + MySQL

Boa tarde,

Gostaria de saber se alguem tem algum codigo pronto, nāo precisa estar facil de entender, qualquer coisa eu me viro, onde se popula um combobox buscando dados de uma X e apos selecionar um valor popular um segundo combobox dentro da pagina. Por exemplo uma tabela de estados e outra tabela de cidades, apos selecionar um estado o segundo combobox é populado com as cidades pertencentes ao estado escolhido.

Camarada, pronto ninguém vai te passar.
O que vou postar são partes que estão funcionando (acabei de fazer).

<h:panelGrid columns="2">
		<h:selectOneMenu id="sel" value="#{managedBean.lis}" immediate="true" valueChangeListener="#{managedBean.loadList}">
			<f:ajax render="@all" event="change" />
			<f:selectItems value="#{managedBean.lista}" var="lista"/>
		</h:selectOneMenu>
		<h:selectOneMenu id="sel2">
			<f:selectItems value="#{managedBean.lista2}" var="lista2">
				<f:selectItem itemValue="#{lista2}" itemLabel="#{lista2}" />
			</f:selectItems>
		</h:selectOneMenu>
	</h:panelGrid>

E no managedBean

public void loadList(ValueChangeEvent e){
        lis = e.getNewValue().toString();
        if(lis.equals("AAA")){
            lista2 = new String[]{"AAA1","AAA2","AAA3"};
        }else
        if(lis.equals("BBB")){
            lista2 = new String[]{"BBB1","BBB2","BBB3"};
        }else
        if(lis.equals("CCC")){
            lista2 = new String[]{"CCC1","CCC2","CCC3"};
        }
    }

A parte de consulta e todas as alterações são de tua responsabilidade.
Ok?
Se precisar de ajuda, tem um fórum de persistência, muito bom aqui no guj e no “gugol” você também acha muita coisa.

[quote=drsmachado]A parte de consulta e todas as alterações são de tua responsabilidade.
Ok?
[/quote]

Ok, vlw cara, daqui pra frente eu me viro.

ESTOU COM DIFICULDADES PARA RESOLVER ESTE ERRO, TENHO UM BANCO DE DADOS SIMPLES, QUANDO PREENCHO UM FORMULARIO, QUERO GRAVAR OS DADOS PREENCHIDOS NO ID QUE JA ESTÁ DETERMINADO NO BANCO DE DADOS. EXEMPLO: TENHO O ID A1,A2,B1,B2, SELECIONO O CAMPO B2, PARA GRAVAR OS DADOS ESCRITOS NO FORMULARIO, MAS ESTÁ DANDO ERRO:

GRAVE: Servlet.service() for servlet GravarLivro threw exception
java.lang.NumberFormatException: For input string: “::.Selecione”
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Long.parseLong(Long.java:410)
at java.lang.Long.parseLong(Long.java:468)
at br.com.eibsb.servlet.GravarLivro.doPost(GravarLivro.java:29)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

[code]<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
<%@taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt” %>
<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>

Adiciona Livro

Gravar Livro

Titulo:
Autor:
Isbn:
Prateleiras: ::.Selecione //NESSA LINHA Ñ SEI O Q FAZER ${livro.id_prateleiras.descricao}
			</td>					
		</tr>
		<tr>
			<td>Data Cadastro: </td>
			<td><input type="text" value="<fmt:formatDate value='${livro.dataCadastro.time}' pattern='dd/MM/yyyy'/>" name="dataCadastro" size="15" maxlength="10"></td>
		</tr>			
		<tr>
			<td colspan="2" align="center">
				<input type="submit" name="Gravar" value="Gravar">
			</td>
		</tr>
	</table>
</form>
[/code]

NA CLASSE GRAVA LIVRO, O ERRO APONTA PARA ESTA LINHA:

		p.setId(Long.parseLong(request.getParameter("id_prateleiras")));

tenta um JQUERY ai…

fica mto mais limpo o código.

[quote=FelipeThi]tenta um JQUERY ai…

fica mto mais limpo o código.[/quote]

mas to aprendendo jstl então tenho que tiras minhas dúvidas com relação a este código

Aqui vai um trecho de um código meu (retirado de http://code.google.com/p/wiki-libras/source/browse/trunk/wikilibras/WebContent/WEB-INF/jsp/sign/editHandForm.jsp):

			<select name="group_shape" onchange="changeShapeGroup();">
				<option value="TODOS">Todos</option>
				<c:forEach var="group" items="${shapeGroups}">
					<option value="${group}">${group.string}</option>
				</c:forEach>
			</select>

Ou seja, na linha em q vc não sabe oq fazer vc tem q usar um array já setado pelo servlet para jogar no seu “items”

Vou por aqui o trecho do código que gerou o meu shapeGroups (retirado de http://code.google.com/p/wiki-libras/source/browse/trunk/wikilibras/src/br/usp/wikilibras/control/SignController.java):

List<ShapeGroup> shapeGroups = new ArrayList<ShapeGroup>();
// preencho a lista...
result.include("shapeGroups", shapeGroups);
// onde result é o Result me passado pelo VRaptor

No caso de um servlet normal, vc pode usar o request.setAttribute()

No fim, seu JSP tem q ficar algo assim:

                    <c:forEach items="${livros}" var="livro">
                        <option value="${livro.id_prateleiras.id}">${livro.id_prateleiras.descricao}</option>  
                    </c:forEach>  

isso mesmo, ficou assim

[code]


Prateleira:

Selecione

1
2
3
<c:forEach items="${id_prateleira}" var=“id_prataleiras” >
${livro.id_prateleiras.descricao}
</c:forEach>
			</td>					
		</tr>[/code]

valeu aí
[Resolvido]