I have two dataTables whose respective values are drawn from two distinct lists in the same managed bean. Selecting a row in the first table re-renders the second table. In turn, selecting a row in the second table is supposed to re-render a graphic image. The two tables and the image are all on the same page.
The issue I can't get around is that the first table works fine, but the action specified in the second table's <a4j:commandLink> tag isn't working as expected. An Ajax request is submitted, but it's not hitting the corresponding method in my managed bean.
<h:dataTable id="floors" var="floor"
value="#{virtualHallway.floors}"
styleClass="scrollerTable table"
headerClass="standardTable_Header" rowClasses="standardTable_Row1,standardTable_Row2"
columnClasses="standardTable_ColumnCentered">
<t:column>
<f:facet name="header">
<h:outputText value="#{messages['vh.floor']}"/>
</f:facet>
<a4j:commandLink action="#{virtualHallway.refreshImagePaths}" value="#{floor.name}"
reRender="imagePaths">
<f:param name="floorId" value="#{floor.id}"/>
</a4j:commandLink>
</t:column>
</h:dataTable>
<h:dataTable id="imagePaths" var="imagePath" value="#{virtualHallway.imagePaths}"
styleClass="scrollerTable table"
headerClass="standardTable_Header" rowClasses="standardTable_Row1,standardTable_Row2"
columnClasses="standardTable_ColumnCentered">
<h:column>
<f:facet name="header">
<h:outputText value="#{messages['vh.thumbnail']}"/>
</f:facet>
<a4j:commandLink action="#{virtualHallway.refreshImage}" reRender="fullSizeImage">
<h:graphicImage url="#{imagePath.thumbnailPath}"/>
<f:param name="pathId" value="#{imagePath.id}"/>
</a4j:commandLink>
</h:column>
</h:dataTable>
<h:graphicImage id="fullSizeImage" url="#{virtualHallway.selectedFullSizeImagePath}"/>I changed the managed bean scope to "session" and that fixed the problem.