Pessoal, criei uma tela simples composta por um formulario de dados com um campo de descricao e uma tabela abaixo com todos os registros já cadastrados em BD. Quando clico sobre um destes registros a intenção é de que o formulario de dados seja preenchido com a descrição do respectivo item. No entanto, isso não acontece.
Aliás isso acontece perfeitamente desde que eu não coloque na tela as propriedades de validação.
Explicando melhor, o preenchimento do campo ‘descricao’ é obrigatório, portanto ele possui o atributo required=“true”, no entanto, se eu quero clicar sobre um item da tabela de registros para prencher tal formulario que contem o campo descricao, eu tenho de colocar no link deste item um immediate=true, para que a validação não recaia sobre o metodo ‘setForm’. Acontece que se eu coloco esse immediate=true, quando eu clico sobre o item ele até invoca a ação no meu ManagerBean, no entanto, ele não rerenderiza a area do formulario, eu consiguo renderizar outras areas, como a area da tabela de registros por exemplo, mas a area do formulario onde está o campo descricao que possui o required=true, ele nao renderiza depois de voltar da acao. Alguem sabe me dizer o porque que isso acontece e como resolver?
Lembrando que se eu tiro o immediate=true do link do item ele renderiza a area do formulario, no entanto, se eu nao colocar esse atributo ele sempre me exige que eu tenha no campo descricao algo preenchido, o que nao faz sentido, pois eu estou clicando no item da tabela de registros justamente para preencher o formulario de dados.
Rerender com immediate nao funciona bem
4 Respostas
Pessoal, alguem consegue me dar uma luz?
Vou colocar o meu codigo aqui pra ajudar melhor voces a entenderem o problema:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<ui:composition template="templates/master.xhtml">
<ui:define name="informacoes">
<f:view>
<a4j:region id="reg_lst_tema">
<a4j:outputPanel id="lst_tema">
<h:messages showDetail="true" showSummary="false"></h:messages>
<h:outputText value="Descricao: ">
</h:outputText>
<h:inputText id="descricao" value="#{tema.descricao}">
</h:inputText>
<a4j:commandLink actionListener="#{tema.setForm}"
reRender="descricao" immediate="true" >
<h:outputText value="SETAR FORM" />
<a4j:actionparam name="pk" value="1" />
</a4j:commandLink>
</a4j:outputPanel>
</a4j:region>
</f:view>
</ui:define>
</ui:composition>
</html>
Eu simplifiquei a tela, de forma que coloquei um unico link ‘SETAR FORM’, se nele eu coloco o immediate=true como está ai, entao a requisicao vai na action, mas nao re-renderiza o input de descricao conforme eu desejo com o novo valor, no entanto, se eu retiro o immediate=true dai tudo funciona beleza.
Alguem sabe me ajudar nesta?
Pessoal, consegui em parte resolver o problema ao fazer com que o metodo setForm retornasse uma string mapeada para a pagina corrente, não sei porque, mas só dessa forma os componentes inputs da pagina conseguem ser renderizados tendo a ação (setForm) um immediate=“true”.
O problema é que agora, depois que a pagina volta, acontece o erro mais estranho que eu já vi em programação.
Todos os meus javascripts referenciados em tal tela, passam a assumir dinamicamente caracteres chineses, dai tudo fica bagunçado, até mesmo os javascripts gerados pelo framework (ajax4jsf) ficam com esse erro.
Quem me indica o erro é o Firebug que acredito muitos de voces devem utilizar também.
Nele vem o seguinte erro:
illegal character — meujavascript.js
[Break on this error] ⼯⁆畮漠牥獰潮珡癥氠灯爠獥瑡爠漠捡浰漠摥獣物漠捯洠漠癡汯爠捬楣慤漠湡⁴慢敬愠灡牡摩漊੦畮捴楯渠敤楴慔敭愨楤ⱴ楴畬漩笊ऊॷ楮摯眮摯捵浥湴整䕬敭敮瑂祉搨≦…
Alguem imagina o que pode ser, já perdi a paciencia pra fazer o tal setForm com o immediate true, não pode ser tal complicado assim.
Abraços a todos.
Cara, estou com o mesmo problema. Voce conseguiu alguma ajuda para resolver este erro ao carregar o JS?
Pra mim funciona beleza no IE mas no Firefox não!
[]s
Rafael
Consegui uma solução pro meu problema. Troquei na seção da minha página de
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
para
<meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8"/>
Se simplesmente remover o charset funciona também.
Espero ter ajudado!
[]s
Rafael