Editando dados populando um Select com DWR

2 respostas
B

Estou usando o DWR em um projeto mas só está funcionando corretamente com o cadastro de um novo registro, na sua edição, a combo é exibida como se não tivesse nada no banco. Lembrando que o único problema que tenho é que o valor que vem do bando não aparece para o usuário, alguém consegue identificar o erro no código?

jsp:
<tr>
		  			<td class="dir">Diretoria:</td>
		  			<td class="esq">
		  				<h:selectOneMenu value="#{control.func.idDiretorias}" id="comboDiretoria" onchange="javascript:preencheComboDiretoria();" />
		  				<font color="#ff0000"> * </font>
		  			</td>
		  		</tr>
		  		<tr>
		  			<td class="dir">Coordenacões:</td>
		  			<td class="esq">
		  				<select id="comboCoordenacao" name="idCoordenacao" onchange="selectComboDivisao(this.value);">
		  					<option value="">Carregando......</option>
		  				</select>
		  			</td>
		  		</tr>
		  		<tr>
		  			<td class="dir">Unidade:</td>
		  			<td class="esq">
		  				<select id="comboDivisao" name="idDivisao">
		  				<option value="">Carregando......</option>
		  				</select>
		  			</td>
		  		</tr>
Funções js
function preencheComboDiretoria(){
				if(document.getElementById('form_cad_func:idCargos').value == 1){
					//alert(document.getElementById('form_cad_func:idCargos').value);
					document.getElementById('form_cad_func:idCoordenacao').disabled = true;
					document.getElementById('form_cad_func:idDivisao').disabled = true;
					document.getElementById('form_cad_func:idCoordenacao').value = "";
					document.getElementById('form_cad_func:idDivisao').value = "";
				} else {
					document.getElementById('form_cad_func:idCoordenacao').disabled = false;
					document.getElementById('form_cad_func:idDivisao').disabled = false;
					
				}if(document.getElementById('form_cad_func:categoria').value == 'Estagiário'){
					document.getElementById('form_cad_func:idCargos').value = 3;
					document.getElementById('form_cad_func:idCargos').disabled = true;
					
				}else {
					document.getElementById('form_cad_func:idCargos').disabled = false;
				}
				
			}
function selectComboDivisao(idValue){
	//Instanciando um objeto e adicionando uma propriedade,
	//esse objeto ao ser passado para a classe java(FacadeAjax) será convertido para um objeto
	//do tipo BeanUsers.
	var bean = {id:idValue};
	
	FacadeAjax.getUnidadeDPOA(bean,{
		callback:function(list){
				//Função que remove caso exista os valores da combo.
				DWRUtil.removeAllOptions("comboDivisao");
				//Adicionando valores na combo.
				DWRUtil.addOptions("comboDivisao", list,"id", "nome");
		},
		errorHandler:function(errorString, exception) {setMsgError(errorString, 'block');},
		timeout:50000
	});		
}

2 Respostas

jmoreira

Você verificou se realmente os dados estão chegando do BD?
Utilize o browse FireFox e instale o plugin Firebug. Depois você faz assim:

#  callback:function(list){  

                    console.debug(list);

#                 //Função que remove caso exista os valores da combo.  
#                 DWRUtil.removeAllOptions("comboDivisao");  
#                 //Adicionando valores na combo.  
#                 DWRUtil.addOptions("comboDivisao", list,"id", "nome");  
#         },

E veja o que está sendo enviando e chegando do servidor.

Sem esse plugin fica dificil debug com DWR.

B

Os dados estão chegando do banco sim, e quando mudo a combo, funciona normalmente tambem. O problema é que quando entra na tela de ediçao, os dados do registro do banco (relativos à combo) não vem com a seleção correta. Por exemplo. Se a combo for de Estados que popula uma combo de cidades, ela funciona normalmente na inserção, mas quando vou editar, se o registro está com Brasília - DF, ele aparece como se tivesse sendo um novo, ou seja, vazio…

Valeu

Criado 25 de março de 2008
Ultima resposta 31 de mar. de 2008
Respostas 2
Participantes 2