a4j:KeepAlive - talvez?

2 respostas
D

Fala pessoal,

seguinte, estou começando agora na área de programação Java / JSP / JSF e afins. Não estou sozinho no projeto, e por isso estou tendo que “correr atrás do prejuízo”. rs

Porém, as pessoas que entendiam do assunto (JSF / Facelets) fizeram algumas partes do site e sairam do proejto. Assim, tenho que resolver (urgente) alguns problemas, mas não estou conseguindo.

A plataforma de trabalho é, basicamente:
Tomcat6 + JDK6u11 + JSF + Facelets
(acho que é isso)

Vamos ao problema.

Tenho no site um link “cadastre-se”. Estando numa página “x.xhtml” (x.jsf), quando o usuário clica nesse link é chamada a página “1.jsf”, que abre sobre a página x.jsf (visualmente falando é como se fosse uma DIV). Esta página 1.jsf contém apenas um <a4j:keepAlive /> para o bean do registro e um <a4j:include viewId="" />, que chama a página “2.jsf”, com o conteúdo do formulário que aparecerá para o usuário.
Neste formulário existe um botão CANCELAR, que deveria fechar a “div”, e voltar a mostrar apenas a página x.jsf.
Para fazer isso, é utilizado o seguinte “método”:

No arquivo frame.xhtml (frame básico para as outras páginas), existe o seguinte:

<c:if test="#{regMB.status!='closed'}"> <div id="registerOpen"> <h:form id="register"> <a4j:include viewId="../1.xhtml" /> </h:form> </div> </c:if>
Ou seja, para ativar a janela de cadastro, basta eu mudar o status do Managed Bean “regMB” de closed para open.
E, teoricamente, para fechar tal janela, bastaria eu mudar o status do regMB para closed novamente.

Porém o meu botão Cancelar que deveria fazer isso não consegue fazer, e a partir desse momento a janela de cadastro fica aberta sobre todas as outras páginas do site.
o botão cancelar está da seguinte maneira:

<a4j:commandButton action="#{regMB.close}" onclick="controlaCamada('registerOpen')" image="images/cadastro/cancelar_red.gif" id="cancel"/>

Aquele código no “onclick” é só um javascript que seta o valor do style.visibility da div como hidden, mas ele oculta e logo em seguida, automaticamente, volta a aparecer.

o método regMB.close é só um “setter” do status para “closed”.

Alguém tem alguma idéia do que possa estar ocorrendo? Se precisarem posso postar mais código, sei lá… rs…

Agradeço de ante-mão qualquer ajuda!!! =)

Abraços,

Diego

2 Respostas

D

E ai pessoal, alguém tem alguma sugestão?

G

Ao invés de usar javascript para setar para hidden, eu faria o seguinte:

OnClick mudaria o bean que você precisar, e colocaria um reRender para o componente.
No componente eu colocaria rendered se a opção fosse != da que vc setou, sendo assim desapareceria,
e seu MB permaneceria como deve.

Criado 28 de janeiro de 2009
Ultima resposta 29 de jan. de 2009
Respostas 2
Participantes 2