Query parameter lost
jamesjmp Feb 28, 2008 5:28 PMHello,
In a list page, when I fill a field with a value and press the search button, the displayed list doesn´t take into account the value. In fact, that value dissapear from the field.
In the logs I notice that the value is indeed pased but later it fades away.
This is the log. I find it really strange that pressing once the search button implies three Hibernate queries,
and that the second one is the only one that receives the parameter (in my execution I´ve filled the field with the value LU
17:20:57,953 INFO [STDOUT] PRR_SEAM201GA - getRestrictions 17:20:57,953 INFO [STDOUT] PRR_SEAM201GA - getRestrictions - firmList.firm.firmCode: null 17:20:57,953 INFO [STDOUT] PRR_SEAM201GA - getRestrictions 17:20:57,953 INFO [STDOUT] PRR_SEAM201GA - getRestrictions - firmList.firm.firmCode: null 17:20:57,953 INFO [STDOUT] PRR_SEAM201GA - getRestrictions 17:20:57,953 INFO [STDOUT] PRR_SEAM201GA - getRestrictions - firmList.firm.firmCode: null 17:20:58,109 INFO [STDOUT] PRR_SEAM201GA - getRestrictions 17:20:58,109 INFO [STDOUT] PRR_SEAM201GA - getRestrictions - firmList.firm.firmCode: null 17:20:58,109 INFO [STDOUT] --------------------------------- 17:20:58,125 INFO [STDOUT] Hibernate: select firm0_.firm_code as firm1_310_, firm0_.firm_ccy_code as firm3_310_, firm0_.firm_description as firm2_310_ from prisk.dbo.FIRM firm0_ 17:20:58,250 INFO [STDOUT] PRR_SEAM201GA - getRestrictions 17:20:58,250 INFO [STDOUT] PRR_SEAM201GA - getRestrictions - firmList.firm.firmCode: LU 17:20:58,250 INFO [STDOUT] PRR_SEAM201GA - getRestrictions 17:20:58,250 INFO [STDOUT] PRR_SEAM201GA - getRestrictions - firmList.firm.firmCode: LU 17:20:58,625 INFO [STDOUT] PRR_SEAM201GA - getRestrictions 17:20:58,625 INFO [STDOUT] PRR_SEAM201GA - getRestrictions - firmList.firm.firmCode: LU 17:20:58,734 INFO [STDOUT] Hibernate: select firm0_.firm_code as firm1_310_, firm0_.firm_ccy_code as firm3_310_, firm0_.firm_description as firm2_310_ from prisk.dbo.FIRM firm0_ where lower(firm0_.firm_code) like (lower(?)+'%') 17:20:59,281 INFO [STDOUT] PRR_SEAM201GA - getRestrictions 17:20:59,281 INFO [STDOUT] PRR_SEAM201GA - getRestrictions - firmList.firm.firmCode: null 17:20:59,281 INFO [STDOUT] PRR_SEAM201GA - getRestrictions 17:20:59,281 INFO [STDOUT] PRR_SEAM201GA - getRestrictions - firmList.firm.firmCode: null 17:20:59,281 INFO [STDOUT] PRR_SEAM201GA - getRestrictions 17:20:59,281 INFO [STDOUT] PRR_SEAM201GA - getRestrictions - firmList.firm.firmCode: null 17:20:59,625 INFO [STDOUT] PRR_SEAM201GA - getRestrictions 17:20:59,625 INFO [STDOUT] PRR_SEAM201GA - getRestrictions - firmList.firm.firmCode: null 17:20:59,625 INFO [STDOUT] Hibernate: select firm0_.firm_code as firm1_310_, firm0_.firm_ccy_code as firm3_310_, firm0_.firm_description as firm2_310_ from prisk.dbo.FIRM firm0_
This is the seam-gened FirmList class:
@Name("firmList") public class FirmList extends EntityQuery { private static final String[] RESTRICTIONS = { "lower(firm.firmCode) like concat(lower(#{firmList.firm.firmCode}),'%')", "lower(firm.firmDescription) like concat(lower(#{firmList.firm.firmDescription}),'%')",}; private Firm firm = new Firm(); @Override public String getEjbql() { return "select firm from Firm firm"; } @Override public Integer getMaxResults() { return 25; } public Firm getFirm() { return firm; } @Override public List<String> getRestrictions() { System.out.println("PRR_SEAM201GA - getRestrictions"); if (this.firm != null) { System.out.println("PRR_SEAM201GA - getRestrictions - firmList.firm.firmCode: "+this.firm.getFirmCode()); } else { System.out.println("PRR_SEAM201GA - getRestrictions - firmList.firm es null!!"); } return Arrays.asList(RESTRICTIONS); } }
This is FirmList.page.xml
<?xml version="1.0" encoding="UTF-8"?> <page xmlns="http://jboss.com/products/seam/pages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.0.xsd"> <param name="firstResult" value="#{firmList.firstResult}"/> <param name="order" value="#{firmList.order}"/> <param name="from"/> <param name="firmCode" value="#{firmList.firm.firmCode}"/> <param name="firmDescription" value="#{firmList.firm.firmDescription}"/> </page>
And this is FirmList.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:s="http://jboss.com/products/seam/taglib" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich" template="layout/template.xhtml"> <ui:define name="body"> <h:messages globalOnly="true" styleClass="message" id="globalMessages"/> <h:form id="firmSearch" styleClass="edit"> <rich:simpleTogglePanel label="Firm search parameters" switchType="ajax"> <s:decorate template="layout/display.xhtml"> <ui:define name="label">firmCode</ui:define> <h:inputText id="firmCode" value="#{firmList.firm.firmCode}"/> </s:decorate> <s:decorate template="layout/display.xhtml"> <ui:define name="label">firmDescription</ui:define> <h:inputText id="firmDescription" value="#{firmList.firm.firmDescription}"/> </s:decorate> </rich:simpleTogglePanel> <div class="actionButtons"> <h:commandButton id="search" value="Search" action="/FirmList.xhtml"/> </div> </h:form> <rich:panel> <f:facet name="header">Firm search results</f:facet> <div class="results" id="firmList"> <h:outputText value="The firm search returned no results." rendered="#{empty firmList.resultList}"/> <rich:dataTable id="firmList" var="firm" value="#{firmList.resultList}" rendered="#{not empty firmList.resultList}"> <h:column> <f:facet name="header"> <s:link styleClass="columnHeader" value="firmCode #{firmList.order=='firmCode asc' ? messages.down : ( firmList.order=='firmCode desc' ? messages.up : '' )}"> <f:param name="order" value="#{firmList.order=='firmCode asc' ? 'firmCode desc' : 'firmCode asc'}"/> </s:link> </f:facet> #{firm.firmCode} </h:column> <h:column> <f:facet name="header"> <s:link styleClass="columnHeader" value="cfgCurrency currencyCode #{firmList.order=='cfgCurrency.currencyCode asc' ? messages.down : ( firmList.order=='cfgCurrency.currencyCode desc' ? messages.up : '' )}"> <f:param name="order" value="#{firmList.order=='cfgCurrency.currencyCode asc' ? 'cfgCurrency.currencyCode desc' : 'cfgCurrency.currencyCode asc'}"/> </s:link> </f:facet> #{firm.cfgCurrency.currencyCode} </h:column> <h:column> <f:facet name="header"> <s:link styleClass="columnHeader" value="firmDescription #{firmList.order=='firmDescription asc' ? messages.down : ( firmList.order=='firmDescription desc' ? messages.up : '' )}"> <f:param name="order" value="#{firmList.order=='firmDescription asc' ? 'firmDescription desc' : 'firmDescription asc'}"/> </s:link> </f:facet> #{firm.firmDescription} </h:column> <h:column> <f:facet name="header">action</f:facet> <s:link view="/#{empty from ? 'Firm' : from}.xhtml" value="Select" id="firm"> <f:param name="firmFirmCode" value="#{firm.firmCode}"/> </s:link> </h:column> </rich:dataTable> </div> </rich:panel> <div class="tableControl"> <s:link view="/FirmList.xhtml" rendered="#{firmList.previousExists}" value="#{messages.left}#{messages.left} First Page" id="firstPage"> <f:param name="firstResult" value="0"/> </s:link> <s:link view="/FirmList.xhtml" rendered="#{firmList.previousExists}" value="#{messages.left} Previous Page" id="previousPage"> <f:param name="firstResult" value="#{firmList.previousFirstResult}"/> </s:link> <s:link view="/FirmList.xhtml" rendered="#{firmList.nextExists}" value="Next Page #{messages.right}" id="nextPage"> <f:param name="firstResult" value="#{firmList.nextFirstResult}"/> </s:link> <s:link view="/FirmList.xhtml" rendered="#{firmList.nextExists}" value="Last Page #{messages.right}#{messages.right}" id="lastPage"> <f:param name="firstResult" value="#{firmList.lastFirstResult}"/> </s:link> </div> <s:div styleClass="actionButtons" rendered="#{empty from}"> <s:button view="/FirmEdit.xhtml" id="create" value="Create firm"> <f:param name="firmFirmCode"/> </s:button> </s:div> </ui:define> </ui:composition>
Any idea will be welcomed! thanks in advance!