Didn't wanted to bloat the post, but it happens with every dataTable I have, 
wheter they use query objects, my own custom beans, or even bean.property of 
type list, they all get queryed again for every s:link in every row (of a 
h:dataTable).

Here's a quick sample, the COMPLETE page list-regions.xhtml:


  | <!DOCTYPE composition 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:c="http://java.sun.com/jstl/core";
  |     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:s="http://jboss.com/products/seam/taglib";
  |     xmlns:a="https://ajax4jsf.dev.java.net/ajax";
  |     template="/template.xhtml">
  | 
  | <!-- content -->
  | <ui:define name="content">
  | 
  | <div class="section">
  |     <span class="errors">
  |        <h:messages globalOnly="true"/>
  |     </span>
  |     <h1>#{messages.list_regions_label}</h1>
  | </div>
  | 
  |   <div class="section">
  |     <h:dataTable id="regions" value="#{regions.resultList}" var="region" 
rowClasses="row0,row1" >
  |             <h:column rendered="#{s:hasRole('Debug')}">
  |                     <f:facet name="header">id</f:facet>
  |                     #{region.id}
  |             </h:column>
  |             <h:column>
  |                     <f:facet 
name="header">#{messages.region_name_label}</f:facet>
  |                     #{region.name}
  |             </h:column>
  |             <h:column>
  |                     <f:facet 
name="header">#{messages.region_options_label}</f:facet>
  |                     
  |                     <s:link propagation="none" 
view="/register/register-region.xhtml" style="text-decoration: none">
  |                             <h:graphicImage 
url="/img/status_bullet/pencil_blue.gif" onmouseover="return 
escape('#{messages.region_edit_label}');" styleClass="icon" />
  |                             <f:param name="selectedRegionId" 
value="#{region.id}" />
  |                     </s:link>
  |             
  |                     <s:link propagation="join" 
view="/list/list-employees.xhtml" >
  |                             <h:graphicImage 
url="/img/status_bullet/avatars_blue.gif" onmouseover="return 
escape('#{messages.view_region_employees}');" styleClass="icon" />
  |                             <f:param name="selectedRegionId" 
value="#{region.id}" />
  |                     </s:link>
  |                     
  |                     <s:link propagation="join" 
view="/list/list-complexes.xhtml" >
  |                             <h:graphicImage 
url="/img/status_bullet/house_blue.gif" onmouseover="return 
escape('#{messages.view_region_complexes}');" styleClass="icon" />
  |                             <f:param name="selectedRegionId" 
value="#{region.id}" />
  |                     </s:link>
  |                     
  |             </h:column>
  |     </h:dataTable>
  |   </div>
  | 
  | </ui:define>
  | 
  | <!-- sidebar -->
  | <ui:define name="sidebar">
  |     <ui:include src="/menu-simple.xhtml" />
  | </ui:define>
  | 
  | </ui:composition>
  | 

and the actual full entityQuery that does the work (it is the COMPLETE source, 
that's all):


  | @Name("regions")
  | public class RegionList extends EntityQuery {
  | 
  |     @Logger Log log ;
  |     
  |     @Override
  |     public String getEjbql() {
  |             return "SELECT r FROM Region AS r WHERE r.active > 0 ORDER BY 
r.name " ;
  |     }
  |     
  |     @Override
  |     public List getResultList() {
  |             log.debug("fetchin' list") ;
  |             return super.getResultList() ;
  |     }
  | }
  | 

there are 16 entries on the database, it prints in the logs:

  | DEBUG [RegionList] fetchin' list
  | X 49
  | 
exactly 49 times, one for the table, one for each s:link (16*3+1), if I remove 
1, 2, or the 3 s:links, then it prints 33 (16*2+1), 17 (16+1) and 1 (1 :P) 
times respectively. So, it's fetching again for each s:link on the table.

... this HAS to be an error. 

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4061539#4061539

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4061539
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to