Problemas Ajax/JSF - Renderizar painel

0 respostas
H

Bom dia

Galera, devido a uma lógica exigida pela minha página e pelo gestor, preciso que quando o usuário clicar em um "radio" na tela, seja exibida uma mensagem javascript, e ao mesmo tempo devo renderizar novamente um painel ajax com alguns campos dentro dele.
Acontece que este javascript irá controlar a visualização deste painel, se o usuário clicar em SIM eu mostro o painel ,caso contrário eu escondo ele.
Um desenvolvedor fez o javascript do qual controla esta visualização do painel através de um hidden,setando ele para TRUE ou FALSE, logo a propriedade visible do painel esta ligada ao mesmo atributo do hidden.
Isto funciona se caso eu dar submit() na tela inteira, pois o painel será renderizado novamente e sua visualização se atualizará conforme o valor que estiver setado no hidden.

Este funcionamento ficou meio penoso, ja que somente funciona se for atualizado a página inteira, eu queria apenas atualizar somente o painel, e por isto pensei no AJAX.

O que estou tendo é o seguinte: Não funciona ao mesmo tempo o onclick do selectOneRadio e o onclick do a4j:support ligado ligado a ele.

O código seria mais ou menos este:

<h:panelGrid>
                        <h:selectOneRadio id="radio" onclick="if (confirm('tem certeza?')) alert('sim'); else alert('não');" >
                            <f:selectItem itemLabel="Teste1" itemValue="1" />
                            <f:selectItem itemLabel="Teste2" itemValue="2" />
                        </h:selectOneRadio>
                        <a4j:support event="onclick" reRender="painel" />
                    </h:panelGrid>

Percebam que no caso acima, eu uso 2 onclicks, e isto não funciona né,hehe
Obs: conforme eu expliquei acima ,no onclick do selectOneRadio há uma função que seta o valor do hidden, mas não coloquei aqui pq não vem ao caso e não estou no serviço para poder pega-la.

Alguém tem algumaidéia de como eu posso exibir uma mensagem javascript e atualizar um painel ?

Vou colocar algo que simule minha situação aqui, se alguém puder testar eu agradeceria muito. Qualquer idéia vai me ajudar bastante,as que tive até agora não foram legais,rsrs
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<!-- RichFaces tag library declaration -->

<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>

<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>



<html>

    <head>

        <title>Página de Teste</title>

    </head>

    <body>

        <f:view>
            <rich:panel>
                <f:facet name="header">
                    <h:outputText value="Ao clicar no radio, exibir mensagem javascript e renderizar novamente somente o painel"/>
                </f:facet>

                    <h:panelGrid>
                        <h:selectOneRadio id="radio" onclick="if (confirm('tem certeza?')) alert('sim'); else alert('não');" >
                            <f:selectItem itemLabel="Teste1" itemValue="1" />
                            <f:selectItem itemLabel="Teste2" itemValue="2" />
                        </h:selectOneRadio>
                        <a4j:support event="onclick" reRender="painel" />
                    </h:panelGrid>

                    <rich:panel id="painel">
                        <a4j:form>
                            <h:panelGrid>
                                <h:outputText id="atualizar" value="Name:" />
                                <h:inputText id="atualizarSeForSim2" value="" />
                            </h:panelGrid>
                        </a4j:form>
                    </rich:panel>

            </rich:panel>

        </f:view>

    </body>

</html>

Abraços

Criado 10 de julho de 2010
Respostas 0
Participantes 1