Respondendo de uma maneira direta, você não pode reRenderizar um componente na qual possua o atributo rendered dinâmico, ou seja, ele não pode possuir EL para definir seu estado. No seu caso, o componente a4j:outputPanel.
Para resolver isso reRenderize o componente pai do a4j:outputPanel. Lembrando que este componente pai não pode ter o atributo rendered dinâmico, ou seja, ele sempre precisa ser renderizado.
Respondendo de uma maneira direta, você não pode reRenderizar um componente na qual possua o atributo rendered dinâmico, ou seja, ele não pode possuir EL para definir seu estado. No seu caso, o componente a4j:outputPanel.
Para resolver isso reRenderize o componente pai do a4j:outputPanel. Lembrando que este componente pai não pode ter o atributo rendered dinâmico, ou seja, ele sempre precisa ser renderizado.
[quote=padcoe]rponte,
e se eu quiser usar um rendered dinamico? não tem como usar com o reRender?[/quote]
Você pode usar sim um rendered dinâmico e ao mesmo tempo utilizar o reRender após um evento para “repintar” este mesmo componente. Mas isso provavelmente falhará quando o componente sumir (rendered=false). Enquanto o rendered for avaliado como true você não terá este problema. Por isso o ideal é evitar este cenário e sempre “repintar” um componente pai qualquer. No caso do Richfaces o a4j:outputPanel é uma excelente escolha como componente pai, caso contrário um h:panelGroup resolve.
[quote=renanreismartins]@rponte parabens pela contribuiçao!!
realmente sua afirmação procede, sofri muito com este problema e o corrigia da maneira que vc citou, porem ninguem nunca soube me explicar o “pq”.
Poderia informar a fonte dessa informação ?
ah parabens pelo blog
grande abrasssssss[/quote]
Vou tentar explicar o motivo, espero que fique claro.
Não é interessante tentar reRenderizar um componente com rendered dinâmico pois quando o atributo rendered é avaliado para false o componente (código XHTML) não aparece na árvore DOM da página. Sendo, após um evento AJAX o código JavaScript do Richfaces responsável por atualizar o bloco de código (onde se encontraria o componente) não consegue achar a posição exata para reRenderizar na página, já que o código XHTML do componente não existe na árvore DOM. Então no final ele acaba simplesmente não fazendo nada.
Por isso, quando você reRenderiza um componente pai qualquer (que sempre tem rendered avaliado para true) o Richfaces consegue encontrar a posíção exata da página, e como o componente com rendered dinâmico é um nó (filho) do componente pai ele também é “repintado”.
Enfim, tudo ocorre normalmente no lado servidor. O problema mesmo ocorre no lado cliente (browser). Você pode observar isso com o Firebug, se achar necessário.
Espero que tenha ficado claro.
Sobre a fonte da informação, eu estou quase certo que eu li na documentação do Richfaces. Lá ele explica exatamente este cenário. Se não me engano, a documentação do Trinidad também comenta sobre isso. Ou seja, é um problema recorrente com vários, se não todos, os conjuntos de componentes AJAX.
Estou com um problema sera que alguém pode dar uma luz, quando dou um reRender no outputPane o inputText não funciona, não pega os dados digitados, o codigo seguinte é uma parte do codigo
rponte, é isso mesmo!
Certas coisas a gente tem idéia ou sabe, mas as vezes deixa de responder a um colega ou não, acaba respondendo mas sem se expressar devidamente.
Você foi bem claro!
O post no blog ficou ótimo tmb.
Agora só falta algum modera marcar como “resolvido”.