rich:tree and a4j:poll value method always call
bongo Jul 29, 2008 5:06 AMHello everyone,
I’ve got a problem with rich:tree and a4j:poll.
Code:
Tree File
<a4j:form style="display: inline;" id="arbre_form">
<ratp:block styleClass="treeContainer">
<h:panelGroup>
<rich:tree
rendered="true"
ajaxSingle="true"
switchType="ajax"
value="#{Arbre.modelTree}"
var="item"
nodeFace="#{item.type}"
id="arbre_materiel"
binding="#{Arbre.tree}"
iconCollapsed="${basePath}/styles/images/icones/collapsed.gif"
iconExpanded="${basePath}/styles/images/icones/expanded.gif"
reRender="arbre_form">
<rich:treeNode
type="SCG"
rendered="true">
<f:facet name="icon">
<h:graphicImage
title="#{ArbreMessages['arbre.mcca']}"
url="#{item.openPicturePath}" />
</f:facet>
<f:facet name="iconLeaf">
<h:graphicImage
alt="inactif"
url="#{item.closedPicturePath}" />
</f:facet>
<rich:dropDownMenu
event="oncontextmenu"
verticalOffset="-1000"
value="#{item.libelle}">
<rich:menuItem>
</rich:menuItem>
</rich:dropDownMenu>
</rich:treeNode>
<rich:treeNode
type="STANDARD_TREE_TYPE"
rendered="true">
<f:facet name="icon">
<h:graphicImage
title="#{item.titlePicture}"
alt="#{item.titlePicture}"
url="#{item.openPicturePath}" />
</f:facet>
<f:facet name="iconLeaf">
<h:graphicImage
title="#{item.titlePicture}"
alt="#{item.titlePicture}"
url="#{item.closedPicturePath}" />
</f:facet>
<a4j:htmlCommandLink
id="cmdContextMenu"
value="#{item.libelle} (#{item.nbChilds})"
action="#{item.doActionOnClick}"
styleClass="#{item.outputTextStyleClass}"
onmouseover="javascript:updateFilter('#{item.filtre}', '#{item.uid}');">
<f:param
name="id"
value="#{item.id}" />
<f:param
name="param1"
value="#{item.param1}" />
<rich:componentControl event="oncontextmenu" attachTo="cmdContextMenu" for="arbreContextMenu" operation="show">
</rich:componentControl>
</a4j:htmlCommandLink>
</rich:treeNode>
<rich:treeNode
type="AUTORISATION_TREE_TYPE"
rendered="true">
<f:facet name="icon">
<h:graphicImage
title="#{item.titlePicture}"
alt="#{item.titlePicture}"
url="#{item.openPicturePath}" />
</f:facet>
<f:facet name="iconLeaf">
<h:graphicImage
title="#{item.titlePicture}"
alt="#{item.titlePicture}"
url="#{item.closedPicturePath}" />
</f:facet>
<a4j:htmlCommandLink
value="#{item.libelle}"
action="#{item.doActionOnClick}">
<f:param
name="id"
value="#{item.id}" />
<f:param
name="param1"
value="#{item.param1}" />
</a4j:htmlCommandLink>
</rich:treeNode>
<rich:treeNode
type="BASE_TREE_TYPE"
rendered="true">
<f:facet name="icon">
<h:graphicImage
title="#{item.titlePicture}"
alt="#{item.titlePicture}"
url="#{item.openPicturePath}" />
</f:facet>
<f:facet name="iconLeaf">
<h:graphicImage
title="#{item.titlePicture}"
alt="#{item.titlePicture}"
url="#{item.closedPicturePath}" />
</f:facet>
<h:outputText value="#{item.libelle}" />
</rich:treeNode>
</rich:tree>
</h:panelGroup>
</ratp:block>
<rich:contextMenu id="arbreContextMenu"
onexpand="javascript:document.getElementById('html:body:arbre_form:valueToFiltreArbre').value=document.getElementById('hiddenFilter').value;
document.getElementById('html:body:arbre_form:idTreeArbre').value=document.getElementById('hiddenIdTree').value;"
oncollapse="javascript:contextMenuOpened = false;"
submitMode="none"
rendered="true"
attached="false">
<rich:menuItem id="arbreRichMenuItem">
<h:panelGrid columns="3" id="arbrePanelridMenuItem">
<h:outputText value="#{ArbreMessages['arbre.filtre']}: "/>
<h:panelGroup>
<h:inputText id="valueToFiltreArbre" size="6" value="#{Arbre.filtre}" />
</h:panelGroup>
<a4j:commandLink
action="#{Arbre.filtre}"
reRender="arbre_materiel">
<h:graphicImage
value="/styles/images/icones/valid.gif"
style="cursor:pointer" />
</a4j:commandLink>
<h:inputHidden id="idTreeArbre" value="#{Arbre.idTree}" />
</h:panelGrid>
</rich:menuItem>
</rich:contextMenu>
<script>
function updateFilter(newValue, idTreeValue){
document.getElementById('hiddenFilter').value = newValue;
document.getElementById('hiddenIdTree').value = idTreeValue;
}
</script>
<input type="hidden" id="hiddenFilter" value=""/>
<input type="hidden" id="hiddenIdTree" value=""/>
</a4j:form>Poll file:
<a4j:form>
<a4j:poll
interval="1000"
action="#{InformationBean.updateAction}"
/>
</a4j:form>When the a4j:poll is called, the linked method to the value of the tree (#{Arbre.modelTree}) is called (the tree is not rerender).
In fact on each ajax request, this method is called whereas I don't rerender the tree.
Is there any problem in my code?