[jboss-user] [JBoss Seam] - Re: seam s:link fetchs list multiple times. big error !
bulloncito
do-not-reply at jboss.com
Fri Jul 6 22:22:25 EDT 2007
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
More information about the jboss-user
mailing list