Por que o reRender da linha 72 não renderiza o richpanel da linha 89? Ele renderiza só o outputtext da linha 107. Já coloquei o richpanel em um form, mas não funciona, e o bean da rich:tree chama o bean do richpanel, só não consegue renderiza-la.
<?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:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jstl/core">
<head>
<link rel="stylesheet" href="../css/master.css" type="text/css" />
<style type="text/css">
</style>
</head>
<body>
<ui:composition template="/templates/geral.xhtml">
<ui:define name="menu">
<div id="menu" align="left" style="width: 100%;">
<ul style="list-style: none; margin: 0; padding: 0;">
<li>
<h2
style="color: #fff; background-color: #3b2e1e; font: bold 11px/ 16px arial, helvetica, sans-serif;">Administrador</h2>
<ul style="list-style: none; margin: 0; padding: 0;">
<li><a
style="font: bold 11px/ 16px arial, helvetica, sans-serif">Consultar</a></li>
</ul>
</li>
</ul>
<ul style="list-style: none; margin: 0; padding: 0;">
<li>
<h2
style="color: #fff; background-color: #3b2e1e; font: bold 11px/ 16px arial, helvetica, sans-serif;">Gerência
de Páginas</h2>
<ul style="list-style: none; margin: 0; padding: 0;">
<li><a
style="font: bold 11px/ 16px arial, helvetica, sans-serif">Criar
Nova Página</a></li>
</ul>
</li>
</ul>
<ul style="list-style: none; margin: 0; padding: 0;">
<li>
<h2
style="color: #fff; background-color: #3b2e1e; font: bold 11px/ 16px arial, helvetica, sans-serif;">Páginas
Ativas</h2>
<ul style="list-style: none; margin: 0; padding: 0;">
<li><a
style="font: bold 11px/ 16px arial, helvetica, sans-serif">Regiões</a></li>
</ul>
</li>
</ul>
<h:form>
<h:panelGrid columns="2" width="100%" columnClasses="col1,col2">
<rich:tree switchType="client" id="treeXMLReceita"
value="#{controllerBean.arvoreReceita}" var="vardata">
<rich:treeNode>
<h:outputText value=" #{vardata.attributes['nome']}"
style="font: bold 11px/16px arial, helvetica, sans-serif" />
<a4j:support event="onselected"
action="#{controllerBean.processSelection}"
reRender="panel,selectedNode">
<f:param name="iditem" value="#{vardata.attributes['id']}" />
</a4j:support>
</rich:treeNode>
</rich:tree>
<h:outputText escape="false"
value="Selected Node: #{controllerBean.nodeTitle}"
id="selectedNode" />
</h:panelGrid>
</h:form></div>
</ui:define>
<ui:define name="body">
<rich:panel id="panel" style="background-color: #EEE;">
<a4j:repeat var="menu" value="#{municipioController.municipio.menus}">
<h:outputText value="#{menu.titulo}" />
<br />
<a4j:repeat var="submenu" value="#{menu.submenus}">
<li><h:commandLink
action="#{municipioController.montarPagina}"
value="#{submenu.titulo}">
<f:param value="#{submenu.pagina}" name="titulo" />
</h:commandLink> <h:commandLink action="#{municipioController.montarPagina}"
value="x">
<f:param value="#{submenu.pagina}" name="exc" />
</h:commandLink></li>
<br />
</a4j:repeat>
</a4j:repeat>
<h:outputText value="#{municipioController.htmlOut}" escape="false"
rendered="#{municipioController.renderizador1}" />
</rich:panel>
</ui:define>
</ui:composition>
</body>
</html>
lgweb
Setembro 21, 2009, 8:44am
#2
Tente em vez de dar um reRender no panel colocar um a4j:outPutPanel ,daew axo que va funcionar o reRender.
Coloquei o a4j:outputpanel e não funcionou!
<body>
<ui:composition template="/templates/geral.xhtml">
<ui:define name="menu">
<div id="menu" align="left" style="width: 100%;">
<ul style="list-style: none; margin: 0; padding: 0;">
<li>
<h2
style="color: #fff; background-color: #3b2e1e; font: bold 11px/ 16px arial, helvetica, sans-serif;">Administrador</h2>
<ul style="list-style: none; margin: 0; padding: 0;">
<li><a
style="font: bold 11px/ 16px arial, helvetica, sans-serif">Consultar</a></li>
</ul>
</li>
</ul>
<ul style="list-style: none; margin: 0; padding: 0;">
<li>
<h2
style="color: #fff; background-color: #3b2e1e; font: bold 11px/ 16px arial, helvetica, sans-serif;">Gerência
de Páginas</h2>
<ul style="list-style: none; margin: 0; padding: 0;">
<li><a
style="font: bold 11px/ 16px arial, helvetica, sans-serif">Criar
Nova Página</a></li>
</ul>
</li>
</ul>
<ul style="list-style: none; margin: 0; padding: 0;">
<li>
<h2
style="color: #fff; background-color: #3b2e1e; font: bold 11px/ 16px arial, helvetica, sans-serif;">Páginas
Ativas</h2>
<ul style="list-style: none; margin: 0; padding: 0;">
<li><a
style="font: bold 11px/ 16px arial, helvetica, sans-serif">Regiões</a></li>
</ul>
</li>
</ul>
<h:form>
<h:panelGrid columns="2" width="100%" columnClasses="col1,col2">
<rich:tree switchType="client" id="treeXMLReceita"
value="#{controllerBean.arvoreReceita}" var="vardata">
<rich:treeNode>
<h:outputText value=" #{vardata.attributes['nome']}"
style="font: bold 11px/16px arial, helvetica, sans-serif" />
<a4j:support event="onselected"
action="#{controllerBean.processSelection}"
reRender="panel,selectedNode">
<f:param name="iditem" value="#{vardata.attributes['id']}" />
</a4j:support>
</rich:treeNode>
</rich:tree>
<h:outputText escape="false"
value="Selected Node: #{controllerBean.nodeTitle}"
id="selectedNode" />
</h:panelGrid>
</h:form></div>
</ui:define>
<ui:define name="body">
<a4j:outputPanel ajaxRendered="true" id="panel">
<a4j:repeat var="menu" value="#{municipioController.municipio.menus}">
<h:outputText value="#{menu.titulo}" />
<br />
<a4j:repeat var="submenu" value="#{menu.submenus}">
<li><h:commandLink
action="#{municipioController.montarPagina}"
value="#{submenu.titulo}">
<f:param value="#{submenu.pagina}" name="titulo" />
</h:commandLink> <h:commandLink action="#{municipioController.montarPagina}"
value="x">
<f:param value="#{submenu.pagina}" name="exc" />
</h:commandLink></li>
<br />
</a4j:repeat>
</a4j:repeat>
<h:outputText value="#{municipioController.htmlOut}" escape="false"
rendered="#{municipioController.renderizador1}" />
</a4j:outputPanel>
</ui:define>
</ui:composition>
</body>
To testando aqui o código, os outputs das linhas 16 e 46 estão renderizando, mas o a4j:repeat não!!! Por favor me ajudem!!
<a4j:form >
<rich:tree switchType="client" id="treeXMLReceita"
value="#{municipioController.arvoreReceita}" var="vardata">
<rich:treeNode>
<h:outputText value=" #{vardata.attributes['nome']}"
style="font: bold 11px/16px arial, helvetica, sans-serif" />
<a4j:support event="onselected"
action="#{municipioController.processSelection}"
reRender="selectedNode1,selectedNode,selectedNode3">
<f:param name="iditem" value="#{vardata.attributes['id']}" />
</a4j:support>
</rich:treeNode>
</rich:tree>
<h:outputText escape="false"
value="Selected Node: #{municipioController.nodeTitle}" id="selectedNode" />
</a4j:form>
</ui:define>
<ui:define name="body">
<rich:panel>
<a4j:repeat var="menu" value="#{municipioController.municipio.menus}"
id="selectedNode1">
<h:outputText value="#{menu.titulo}" />
<br />
<a4j:repeat var="submenu" value="#{menu.submenus}">
<li><h:commandLink
action="#{municipioController.montarPagina}"
value="#{submenu.titulo}">
<f:param value="#{submenu.pagina}" name="titulo" />
</h:commandLink> <h:commandLink action="#{municipioController.montarPagina}"
value="x">
<f:param value="#{submenu.pagina}" name="exc" />
</h:commandLink></li>
<br />
</a4j:repeat>
</a4j:repeat>
<h:outputText escape="false"
value="Selected Node: #{municipioController.nodeTitle}" id="selectedNode3" />
<h:outputText value="#{municipioController.htmlOut}" escape="false"
rendered="#{municipioController.renderizador1}" />
</rich:panel>
</ui:define>
thimor
Setembro 21, 2009, 12:23pm
#5
nao sei se isso vai te ajudar… quando eu quero esconder e mostrar componentes eu costumo associar eles a uma propriedade boleana no bean e coloco do atributo rendered="#{bean.propriedadeEsconteMostra}" quando for para mostrar o metodo do bean muda a propriedade e apos o reRender ele aparece ou esconde. no seu caso pode ser isso.
como nao tem nada para definir a renderizacao dele ele sempre vai ser o mesmo.
detalhe: nao sei como esta seu codigo do bean.
mais uma coisa se estiver testando no IE o reRender nao funciona mesmo em alguns casos. entao na solicitacao da linha 72 coloque ajaxSingle=“true” e veja se resolve seu problema. alem de testar em outros navegadores. sujiro chrome e safari.
alias
Setembro 21, 2009, 12:38pm
#6
Carla,
Creio que o seu problema se deve ao fato do a4j:repeat nao ser atualizado completamente em uma requisição ajax, e sim em “partes”. Ou seja, por linhas. Voce deve especificar quais linhas serão atualizadas, através do atributo ajaxKeys
Dê uma olhada na documentação do RichFaces que explica sobre isso, e tambem no demo que existe no site do RichFaces, que utiliza esse recurso.
lgweb
Setembro 21, 2009, 1:14pm
#7
# <h:form>
# <h:panelGrid columns="2" width="100%" columnClasses="col1,col2">
#
# <rich:tree switchType="client" id="treeXMLReceita"
# value="#{controllerBean.arvoreReceita}" var="vardata">
# <rich:treeNode>
# <h:outputText value=" #{vardata.attributes['nome']}"
# style="font: bold 11px/16px arial, helvetica, sans-serif" />
# <a4j:support event="onselected"
# action="#{controllerBean.processSelection}"
# reRender="panel,selectedNode">
# <f:param name="iditem" value="#{vardata.attributes['id']}" />
# </a4j:support>
# </rich:treeNode>
# </rich:tree>
#
# <h:outputText escape="false"
# value="Selected Node: #{controllerBean.nodeTitle}"
# id="selectedNode" />
#
# </h:panelGrid>
#
# </h:form></div>
Procure tbm usar o a4j:form no lugar de h:form
carllacj sei que o tópico é muuuito antigo hehe
mas to com essa dor de cabeça também…
você lembra se como você solucionou esse problema…
ou será que alguem que ser esse tópico tem alguma idéia :s