Fórum JSF2 SelectOneMenu não dispara ValueChangeListener #405985
03/08/2011
0
Caros colegas, Gostaria de saber se alguém já passou pelo mesmo problema e conseguiu fazer funcionar? Trata-se de uma combinação simples de 2 selects. Busquei incansavelmente algum exemplo, mas não consegui encontrar.
O atributo 'valueChangeListener' do componente h:selectOneMenu, não chega nem a chamar o método ufChangeListener(ValueChangeEvent e) no bean. Deve haver algum problema no javascript do framework.
pagina.xhtml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 | < h:form id = "form-cidades-uf" > < h:selectOneMenu id = "sob-ufs" value = "#{cidadeUFComboBean.selecUF}" onchange = "submit()" immediate = "true" valueChangeListener = "#{cidadeUFComboBean.ufChangeListener}" > < f:selectItem itemLabel = "-- Selecione a uf -- " itemValue = "Nenhuma" /> < f:selectItems value = "#{cidadeUFComboBean.ufs}" var = "u" itemValue = "#" itemLabel = "#{u.sigla}" /> < f:ajax event = "change" render = "sob-cidades @form" /> </ h:selectOneMenu > < h:selectOneMenu id = "sob-cidades" value = "#{cidadeUFComboBean.selecCidade}" > < f:selectItem itemLabel = "-- Selecione a cidade -- " itemValue = "Nenhuma" /> < f:selectItems value = "#{cidadeUFComboBean.cidades}" var = "c" itemValue = "#" itemLabel = "#{c.nome}" /> < f:ajax /> </ h:selectOneMenu > </ h:form > |
O Bean:
1 2 | // Cidade selecionada private EnderecoCidade selecCidade; public EnderecoCidade getSelecCidade() { return selecCidade; } public void setSelecCidade(EnderecoCidade selecCidade) { this.selecCidade = selecCidade; } // Cidades do estado selecionado private List< EnderecoCidade > cidades; public List< EnderecoCidade > getCidades() { lookup.getCidDao().list(selecUF); return cidades; } // UF selecionada private EnderecoUF selecUF; public EnderecoUF getSelecUF() { return selecUF; } public void setSelecUF(EnderecoUF selecUF) { this.selecUF = selecUF; } // UFs private List< EnderecoUF > ufs; public List< EnderecoUF > getUfs() { if(ufs==null){ ufs = lookup.getUfDao().list(); } return ufs; } public void ufChangeListener(ValueChangeEvent e){ selecUF = (EnderecoUF) e.getNewValue(); cidades = getCidades(); System.out.println("ufChangeListener: uf="+selecUF.getSigla()+", listou "+cidades.size()+" cidades..."); } |
Desde já agradeço,
Um grande abraço,

César (http://www.codesample.co/)
Curtir tópico
+ 0Posts
03/08/2011
Robson Teixeira
Gostei + 0
03/08/2011
César (http://www.codesample.co/)
Robson, obrigado pelo apoio, entretanto continua igual. O estranho é que o listener não é nem chamado.
O ValueChangeListener deveria ao menos disparar um evento.
Um grande abraço!
Gostei + 0
04/08/2011
Davi Costa
onchange="submit()"
Se é que submete a página.
att Davi
Gostei + 0
04/08/2011
César (http://www.codesample.co/)
Obrigado Davi.
Já tentei com e sem, sem sucesso, coloquei mais para ilustrar, pois muitos tópicos que encontrei na internet, recomendam a função javascript.
Acredito que seja um bug, no javascript do componente SelectOneMenu, pois o listener não é nem chamado.
Um grande abraço!
Gostei + 0
04/08/2011
Davi Costa
se já usa algum que tal pesquisar como a biblioteca de componentes faz a utilização de requisições ajax e não usar a padrão do jsf.
att Davi
Gostei + 0
04/08/2011
Robson Teixeira
Gostei + 0
05/08/2011
César (http://www.codesample.co/)
Descupem a demora por responder, estava em um cliente.
Obrigado Robson, setei ambos como true mas continua sem funcionar.
Davi, estou usando a implementação de referencia Mojarra 2.1.1. com Primefaces 2.2.1 (para outras funcionalidades) no servidor Glassfish 3.1.
Acabei de baixar um exemplo de Select Ajaxify do site do Primefaces, rodei e funcionou, agora vou adapta-lo a meu projeto. Acho que a saída vai ser esta.
Só achei estranho o 'valueChangeListener' não disparar o evento. Se alguém por acaso tiver um exemplo de selects aninhados com 'valueChangeListener' em JSF2/Facelets por favor envie.
Um grande abraço e meu muito obrigado a todos.
Gostei + 0
05/08/2011
Davi Costa
Assim que possível fechar o chamado. Eu até tenho exmplos do valueChangeListener funcionando, mas também um pouco amarrada a minha biblioteca no caso Trinindad.
att Davi
Gostei + 0
05/08/2011
César (http://www.codesample.co/)
Davi, Aproveitando...
Sobre o MyFaces, para vc foi uma determinação do projeto ou opção sua?
É estável para trabalhar com JSF2 e Facelets? Vc recomendaria?
Mais uma vez agradeço, []s
Gostei + 0
05/08/2011
Davi Costa
E eu desaconselho usar jsf sem facelets, a performance cai bastante caso vc tenha um reaproveitamento de telas, como menus ou rodapés.
att Davi
Gostei + 0
05/08/2011
César (http://www.codesample.co/)
No caso, minha pergunta foi se o MyFaces está estavel para trabalhar com JSF e Facelets. E se vc recomendaria o My
Faces?
De qualquer forma, obrigado.
Um grande abraço,
Gostei + 0
05/08/2011
Davi Costa
Agora para o JSF2 é que não tenho muita certeza, mas arriscaria sim.
Dá um google para ver essa questão. De repente vc até posta aqui para toda comunidade saber
abcs
Att Davi
Gostei + 0
05/08/2011
Davi Costa
http://stackoverflow.com/questions/4530746/mojarra-or-myfaces-jsf2-0-starter
http://www.justlogged.com/Question/1/4530746/723adc217f84c3855bfe4ed9f0e8edac
att Davi
Gostei + 0
05/08/2011
César (http://www.codesample.co/)
Valeu Davi!
Coloquei aqui o código do combo funcionando com Primefaces e JSF2, para que quiser:
http://www.codesample.co/2011/08/combo-cidade-uf-com-primefaces-e-jsf-2/
Um grande braço.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)