Rich:comboBox atualiza outro rich:comboBox

5 respostas
J

Boa tarde…

Estou tentando fazer um rich:comboBox atualizar outro rich:comboBox devido cada valor, ou seja, um combo estado dependendo o estado selecionado o combo cidade atualiza seus valores.
Até agora só consegui fazer mas com botão, ou seja, só atualiza se a pessoa pressionar o botão.

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<!-- RichFaces tag library declaration -->
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%> 

<html>

<head>
	<title>RichFaces Greeter</title>
</head>

<body>
	<f:view>
		<h:form>
		
			<rich:comboBox value="#{beanItens.opcPais}">				 
        		<f:selectItems value="#{beanItens.itensPaises}"/>        		
    		</rich:comboBox>	
    		
			<a4j:commandButton value="update" reRender="comboCidade"/>
			
			<rich:comboBox value="#{beanItens.opcCidade}" id="comboCidade">
				<f:selectItems value="#{beanItens.itensCidades}"/>
			</rich:comboBox>
			
		</h:form>
	</f:view>
</body>

</html>

tentei adicionar a linha no primeiro combo:

<a4j:support event="onchange" action="#{beanItens.atualizaComboCidade}" reRender="comboCidade"/>

Porém gera uma excessão:
[color=red]Exception while calling encodeEnd on component : {Component-Path : [Class: org.ajax4jsf.component.AjaxViewRoot,ViewId: /echo.jsp][Class: javax.faces.component.html.HtmlForm,Id: j_id_jsp_443181147_1][Class: org.richfaces.component.html.HtmlComboBox,Id: comboCidade]}

Caused by:
java.lang.IllegalArgumentException - Value of tag attribute is incorrect. [/color]

Se alguém tiver uma ideia, ou exemplo agradeço!

5 Respostas

Tchello

Da uma olhada no a4j:support

J

Ah sim, como comentei acima, eu tentei aplicar mas gera uma excessão.

diegosantiviago

Caused by:
java.lang.IllegalArgumentException - Value of tag attribute is incorrect.

Se puder, coloca seu código. Mas a mensagem tá reclamando dos SelectItems.

J
package br.com;

import java.util.ArrayList;

import javax.faces.model.SelectItem;

import org.richfaces.component.html.HtmlComboBox;

public class ValoresItens {
	
	public ArrayList<SelectItem> itensPaises;
	public ArrayList<SelectItem> itensCidades;
	public String opcPais = "";
	public String opcCidade = "";
	
	public void atualizaComboCidade(){
		itensCidades = new ArrayList<SelectItem>();
		
		if(opcPais.equalsIgnoreCase("brasil")){
			itensCidades.add(new SelectItem("Blumenau"));
			itensCidades.add(new SelectItem("Itajai"));
		}else{
			itensCidades.add(new SelectItem("Boston"));
			itensCidades.add(new SelectItem("Flórida"));
		}		
	}
	
	public ArrayList getItensPaises() {
		itensPaises = new ArrayList<SelectItem>();
		
		itensPaises.add(new SelectItem("Eua"));
		itensPaises.add(new SelectItem("Brasil"));
		
		return itensPaises;
	}
		
	public String getOpcPais() {
		return opcPais;
	}

	public void setOpcPais(String opcPais) {
		this.opcPais = opcPais;
	}

	public ArrayList<SelectItem> getItensCidades() {		
		
		return itensCidades;
	}

	public void setItensCidades(ArrayList<SelectItem> itensCidades) {
		this.itensCidades = itensCidades;
	}

	public String getOpcCidade() {
		return opcCidade;
	}

	public void setOpcCidade(String opcCidade) {
		this.opcCidade = opcCidade;
	}
	
}
J

Consegui resolver.

É só da um build e clean, limpar o navegador que funciona.

Criado 25 de agosto de 2009
Ultima resposta 26 de ago. de 2009
Respostas 5
Participantes 3