Include dinâmico Facelets + Ajax4JSF - reRender não funciona. Help!

13 respostas
Javabuntu

to usando JSF + facelets pra fazer um include dinâmico, na hora que eu clico num link, já testei ele altera o valor do bean que guarda o path da página a ser acessada, porém parece que ele não realiza o reRender… não muda a página que deveria aparecer no centro…vcs saberiam o que pode ser…estou usando assim:

<a4j:commandLink value="Usuario" reRender="centro" > <a4j:actionparam name="url" value="/Usuario.xhtml" assignTo="#{Bean.url}"/>

e aqui o local onde deveria acontecer a troca de páginas…mas não acontece…

<a4j:form id="form"> 
             <a4j:include viewId="#{Bean.url}" id="centro"></a4j:include>
</a4j:form>

aqui ele apenas carrega normalmente o valor que coloquei padrão do url, ele inclui apenas o inicial, depois quando clico no link, ele muda o Bean.url pois testei, mas não renderiza…
já tentei tanto o reRender do id=“form”, quanto do id=“centro”…
e nada, não gera erro, apenas não acontece nada…

vlw a todos…

13 Respostas

Javabuntu
pessoal ainda não consegui resolver o problema.... realizei mais algumas centenas de testes, colocando o include dentro de
<a4j:outputPanel ajaxRendered="true" id="panelConteudo">
e também com tag region
<a4j:region> </a4j:region>

vi que ao clicar no link, ou botão ele atualiza o bean e quando ou um F5 ele recarrega a página com o conteúdo do jeito que eu queria, modificado o centro pois ao clicar no link eu setei a propriedade do bean, porém isso só depois de dar F5, no mais não acontece nada, parece que só falta acontecer o reRender...

vou detalhar um pouco melhor:
link pra clicar:



local a ser renderizado após clicar no link
<ui:define name="conteudo">
                        <a4j:outputPanel ajaxRendered="true" id="panelConteudo">
                            <a4j:include viewId="#{Bean.url}" id="centro"></a4j:include>
                        </a4j:outputPanel>
                    </ui:define>
o conteúdo que será carregado.. tirei o conteúdo de dentro, deixei apenas as tags de fora, pra ver se falta alguma ou tem alguma que não pode....
<?xml version="1.0" encoding="ISO-8859-1"?>

<!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:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:a4j="https://ajax4jsf.dev.java.net/ajax"
      xmlns:c="http://java.sun.com/jstl/core"
      xmlns:rich="http://richfaces.org/rich">
       <head>
            <meta content="text/html; charset=UTF-8" http-equiv="content-type" />
            <title>:.Virtual Project.:</title>
            <link rel="stylesheet" href="css/style.css" />
            <script url="css/jquery.js" type="text/javascript"/>
            <script url="css/MaskedInput.js" type="text/javascript"/>
            <script url="css/mascara.js" type="text/javascript"/>
     </head>
<body>
 <h:form>
             <rich:panel id="panel" header="Cadastro de Usuario" style="max-right:450px;widht:450px;"/>
                         
 </h:form> 		
</body>
</html>

obrigado a todos que ajudar, estou esgotado de testes com o Ajax4JSF e só isso que não funcionou de tudo que usei dele...

Valeu a todos e Feliz 2008.

M

Mano tu conseguiu resolver esse problema?? Putz eu tbm to apanhando desses includes. Se tiver a solucao posta ae. Vlw

Javabuntu

colega consegui sim…está funcionando normal…
consegui incluir uma página dinâmicamente que pega o valor da url no backing bean <a4j:outputPanel ajaxRendered="true"> <a4j:include viewId="#{Bean.url}" id="centro"/> </a4j:outputPanel>
agora eu tive um segundo problema que eu não consegui resolver foi: quando a pagina incluida tem formularios…validações…nada funciona, o include funciona, mas a pagina que funciona normal sozinha, apos ser incluida não valida, nao envia, nao faz nada…

mas qual o problema q vc esta tendo… e o problema das abas conseguiu resolver :?:

flw Hewerton

M

O das abas eu fiz via gambiarra ehheeh, eu vi a sua ideia, e eu vou tentar mais tarde, eh pq to tentando resolver outro problema. O do include dinamico eu consegui resolver, to com outro pro agora. A pagina q eu incluo tem um datatable, cada item tem um link. Eu tneho q dar uns 5 cliques no mesmo item pra acao funcionar, ai depois funciona toda veez, tu sabe o q eh isso??

Javabuntu

bem vindo ao clube meu amigo…foi exatamente esse o erro que falei que eu tive com o include…após incluir… a página incluida nao se comporta como deveria…esses seus 5 cliques…tambem estou com isso…esse nao resolvi… na verdade so estou usando alguns includes q nao foram afetados…mas a maioria deu esse problema…

M

Cara q estranho em, pio q no primeiro include o form tbm funciona normalmente, quando atualizo pra outro eh q começa, ai vc clica clica e clica ai funciona perfeito eheheh. Sera q eh bug ou alguma coisa q tem q fazer? :confused:

M

Ah, o legal eh q eu fiz um include usando javascript mesmo, uma tela q tava dando essa problema, eh ate um datatable com paginacao. Antes eu precisava da uns 5 clicques nos links pra funcionar a paginacao, agora tem q da 2 incluindo dessa forma kkkkk, eh foda :stuck_out_tongue:

M

Mano fiz uma descoberta, na pagina q eu to inclindo usando javascript, como eu disse, precisava da 2 cliques ainda para começar a funcionar. Bom eu vi q tava usando um subview nela em vez de um view, como ela ta sendo redenrizada por uma chamada assicrona e nao pelo jsf, ela precisa de um view, ai coloquei e ela funcionou normalmente. Nao descobri ainda o pq isso acontece com paginas incluidas tbm, mais pelo menos ja deu pra ter uma ideia do problema.

gustavodelgado

Pessoal… em relação ao primeiro problema deste tópico, depois de apanhar bastante, acabei descobrindo um fato bem estranho.
Basicamente fiz um include como o seu:

<a4j:outputPanel ajaxRendered="true" > <a4j:include viewId="#{PaisConsulta.include}" id="centro"/> </a4j:outputPanel>

E um link que seta um fragmento de página diferente no PaisConsulta.include e faz um reRender=“centro”

No meu caso também não estava funcionando este reRender, até eu remover alguns compontentes que existiam na página ANTES do a4j:outputPanel. Principalmente as


Por que isso? Não faço idéia, heheh, mas quando faço algo assim:
<div> Qualquer coisa </div>
<a4j:outputPanel ajaxRendered="true" >
        <a4j:include viewId="#{PaisConsulta.include}" id="centro"/>
</a4j:outputPanel>

Não funciona o reRender.

Porém se eu colocar a div DEPOIS do a4j:outputPanel assim:

<a4j:outputPanel ajaxRendered="true" >
        <a4j:include viewId="#{PaisConsulta.include}" id="centro"/>
</a4j:outputPanel>
<div> Qualquer coisa</div>

Aí o reRender passa a funcionar.

Faz sentido isso? heheh
Se eu colocar um outro a4j:include na mesma página (não importa o local) também não funciona.

Abraços.

E

gustavodelgado experimente colocar <f:subview> na página antes de tudo, assim:

<f:subview>
<div> Qualquer coisa </div>
<a4j:outputPanel ajaxRendered="true" >
        <a4j:include viewId="#{PaisConsulta.include}" id="centro"/>
</a4j:outputPanel>
</f:subview>
dahenz

Pessoal, fiz um menu usando richfaces e quero renderizar um formulário dessa mesma forma.
Olhando os códigos de vocês eu estou quase conseguindo… consigo pegar um valor através de um managedbean e renderizar em um outputPanel, mas quando eu passo o nome da pagina que quero renderizar, me traz um erro… Gostaria de saber como vocês fazem para renderizar a página passando o nome do arquivo .jsp??

vejam o meu código:

<rich:menuItem id="evento" value="Eventos" submitMode="ajax" reRender="area" action="#{EventoMB.defineURL}" />

<a4j:outputPanel ajaxRendered=“true”>
<a4j:include viewId="#{EventoMB.url}" id=“area” />
</a4j:outputPanel>

Me ajudem… por favor…

Obrigado…

F

E ai pessoal se alguém conseguiu resolver o problema dos formularios, posta ai

Obrigado!

Flavio_machine

Fiz assim e funcionou. Mandei renderizar o panel.

<rich:menuItem submitMode=“ajax” value=“Pedidos atendidos” action="#{controlerMenu.imprime}" reRender=“panelCenter” >
<a4j:actionparam name=“url” value="/admin/formBairro.xhtml" assignTo="#{controlerMenu.url}"/>
</rich:menuItem>

<rich:panel id=“panelCenter” style=" background: transparent;border: none;" >
<div id=“areaTrab”>
<a4j:include viewId="#{controlerMenu.url}" />
</div>
</rich:panel>

Sobre o formulários os meu funcionaram corretamente. Tive problema com um um caracteres, coloquei o cabeçalho assim e deu certo.

<?xml version=“1.0” encoding=“ISO-8859-1”?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<ui:composition xmlns=“http://www.w3.org/1999/xhtml
xmlns:h=“http://java.sun.com/jsf/html
xmlns:a4j=“http://richfaces.org/a4j
xmlns:rich=“http://richfaces.org/rich
xmlns:f=“http://java.sun.com/jsf/core
xmlns:ui=“http://java.sun.com/jsf/facelets”>

</ui:composition>

qualquer coisa me mande um email = [email removido]

Criado 30 de dezembro de 2007
Ultima resposta 5 de dez. de 2009
Respostas 13
Participantes 7