rich:extendedDataTable not rerendered when sorting or groupi
ralf.mueller Oct 17, 2008 9:04 AMWe have recently chnaged to tomcat 6 and myfaces 1.2 and now I wanted to try the new extendedDataTable.
The problem is that, when clicking the sort function, the table disappears and stays grey. Also if I click on group by or disable a column, nothing happens.
Another question is..how can I translate the labels in the popup?
Heres my jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <%@ taglib prefix="t" uri="http://myfaces.apache.org/tomahawk"%> <%@ taglib prefix="a4j" uri="http://richfaces.org/a4j"%> <%@ taglib prefix="rich" uri="http://richfaces.org/rich"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <f:view locale="#{user.locale}"> <t:document> <t:documentHead> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <LINK rel="stylesheet" type="text/css" href="/sdps2/app/theme/master.css"> <script src="/sdps2/app/theme/sdps.js" type="text/javascript"></script> <title><h:outputText value=" #{msg.title_rentalGlobal}" /></title> </t:documentHead> <t:documentBody> <f:loadBundle var="msg" basename="de.scania.sdps.resources.resources" /> <f:loadBundle var="style" basename="de.scania.sdps.resources.style" /> <t:div styleClass="pageContainer"> <h:form id="form"> <%@ include file="../../jspf/globalHeaderJsf.jspf"%> <t:div styleClass="standardContainer"> <rich:panel id="contractDetails" styleClass="standardContainer"> <f:facet name="header"> <h:outputText value="#{msg.contracts_search_header}" /> </f:facet> <h:panelGroup> <h:panelGrid columns="16" style="font-weight:10" cellpadding="1"> <h:outputText value="#{msg.contracts_contractNo}" styleClass="standardOutputText" /> <h:inputText value="#{rentalContracts.searchContractNo}" style="width:50px" styleClass="standardInputText" id="i1"/> <h:outputText value="#{msg.chassis_no}" /> <h:inputText value="#{rentalContracts.searchChassisNo}" id="i2" style="width:55px" styleClass="standardInputText"/> <h:outputText value="#{msg.chassis_registration}/#{msg.chassis_ident}" styleClass="standardOutputText" /> <h:inputText value="#{rentalContracts.searchRegistration}" style="width:70px" styleClass="standardInputText" id="i3" /> <h:outputText value="#{msg.global_customer}" styleClass="standardOutputText" /> <h:inputText value="#{rentalContracts.searchCustomer}" style="width:70px" styleClass="standardInputText" id="i4" /> <h:outputText value="#{msg.contracts_contractSubsidary}" styleClass="standardOutputText" /> <h:selectOneMenu value="#{rentalContracts.searchLocation}" style=" width : 150px;" styleClass="standardInputText"> <f:selectItems value="#{defaultValues.searchLocationArray}" /> </h:selectOneMenu> <t:selectBooleanCheckbox id="searchActiveContracts" value="#{rentalContracts.searchActiveContracts}" > <a4j:support event="onclick" actionListener="#{rentalContracts.search}" reRender="contractsTable"></a4j:support> </t:selectBooleanCheckbox> <h:outputText value="#{msg.contracts_search_onlyActive}" styleClass="standardOutputText" /> <h:commandButton value="#{msg.global_button_search}" action="#{rentalContracts.search}" style="width:55px" styleClass="standardButton"/> <h:commandButton image="/app/images/clear.gif" style="width:25px" action="#{rentalContracts.searchClear}" immediate="true"/> </h:panelGrid> </h:panelGroup> </rich:panel> <%-- Advanced Search --%> <rich:togglePanel id="toggleAdvancedSearchID" switchType="ajax" stateOrder="closed, display" initialState="#{rentalContracts.searchAdvancedState}"> <f:facet name="closed"> <rich:spacer></rich:spacer> </f:facet> <f:facet name="display"> <rich:panel styleClass="standardContainer"> <h:panelGrid columns="6"> <h:outputText value="#{msg.global_maxRows}" /> <rich:inputNumberSpinner value="#{user.maxRows}" required="true" inputSize="3" step="10" minValue="1" maxValue="999"/> <h:outputText value="#{msg.contracts_contractStatus}"/> <h:selectOneMenu value="#{rentalContracts.searchStatus}" styleClass="standardInputText" style="width:150px"> <f:selectItems value="#{defaultValues.searchStatusArray}" /> </h:selectOneMenu> <rich:spacer width="100"/> <rich:spacer width="110"/> <h:outputText value="#{msg.chassis_search_chooseDate}" /> <h:selectOneMenu value="#{rentalContracts.searchContractDateSb}" styleClass="standardInputText" style="width:150px"> <f:selectItems value="#{defaultValues.chooseDateArray}" /> <rich:toolTip value="#{msg.toolTip_searchContractDateSb}" followMouse="true" styleClass="toolTip" direction="top-right" /> </h:selectOneMenu> <h:outputText value="#{msg.global_dateStart}" /> <a4j:outputPanel layout="inline" > <t:inputCalendar id="rentalContractChooseStartDateID" renderAsPopup="true" renderPopupButtonAsImage="true" value="#{rentalContracts.searchContractDateStart}" popupTodayString="#{msg.global_todayIs}" popupTodayDateFormat="#{msg.global_datePattern}" styleClass="standardInputDateComponent"> <f:convertDateTime pattern="dd.MM.yyyy" timeZone="CET" /> </t:inputCalendar> </a4j:outputPanel> <h:outputText value="#{msg.global_dateEnd}" /> <a4j:outputPanel> <t:inputCalendar id="rentalContractChooseEndDateID" renderAsPopup="true" renderPopupButtonAsImage="true" value="#{rentalContracts.searchContractDateEnd}" popupTodayString="#{msg.global_todayIs}" popupTodayDateFormat="#{msg.global_datePattern}" styleClass="standardInputDate"> <f:convertDateTime pattern="dd.MM.yyyy" timeZone="CET" /> </t:inputCalendar> </a4j:outputPanel> <rich:spacer width="100"/> <rich:spacer width="110"/> <rich:spacer width="100"/> <rich:spacer width="110"/> <rich:spacer width="100"/> <rich:spacer width="110"/> </h:panelGrid> </rich:panel> </f:facet> </rich:togglePanel> <rich:toggleControl value="#{msg.global_advancedSearch}" for="form:toggleAdvancedSearchID" switchToState="#{rentalContracts.changeAdvancedState}"> </rich:toggleControl> </t:div> <t:div styleClass="standardContainer"> <rich:extendedDataTable var="data" value="#{rentalContracts.contractsSearchResult}" binding="#{rentalContracts.table}" cellpadding="0" cellspacing="0" width="100%" rendered="#{not empty rentalContracts.contractsSearchResult}" rowKeyVar="rowIndex" onmouseover="this.bgColor='#d8d8d8';" onmouseout="this.bgColor='white';" id="contractsTable" sortMode="single" > <rich:column width="25px" style="text-align: center;"> <h:commandButton id="chassisColumnEdit" action="contractDetails" actionListener="#{rentalContracts.loadContractDetails}" image="/app/images/edit.gif" alt="#{msg.global_button_alt_contractDetails}" > <f:param id="contractDealerCodeId" name="contractDealerCode" value=" #{data.contractDealerCode}" /> <f:param id="contractNoId" name="contractNo" value=" #{data.contractNo}" /> <f:param id="rowIndexId" name="rowIndex" value="#{rowIndex}" /> </h:commandButton> </rich:column> <rich:column width="25px" style="text-align: center;" width="18px"> <h:commandButton action="#{rentalContracts.printAction}" actionListener="#{rentalContracts.loadContractDetails}" image="/app/images/print.gif" value="#{msg.global_button_print}" alt="#{msg.global_button_alt_print}" > <f:param id="contractDealerCodePrintId" name="contractDealerCode" value=" #{data.contractDealerCode}" /> <f:param id="contractNoPrintId" name="contractNo" value=" #{data.contractNo}" /> <f:param id="rowIndexPrintId" name="rowIndex" value="#{rowIndex}" /> </h:commandButton> </rich:column> <rich:column width="25px" style="text-align: center;" > <h:commandButton action="chassisDetails" actionListener="#{chassis.loadChassisDetails}" image="/app/images/truck.gif" alt="#{msg.global_button_alt_chassisDetails}" rendered="#{data.contractChassisNo != ''}"> <f:param id="parmDealerCodeId" name="dealerCode" value="#{data.contractExternalDealerCode}" /> <f:param id="parmChassisNoId" name="chassisNo" value="#{data.contractChassisNo}" /> <f:param id="rowIndexLoadId" name="rowIndex" value="#{rowIndex}" /> </h:commandButton> <rich:spacer/> </rich:column> <rich:column width="25px" rendered="#{user.rentalInvoicePermission}" style="text-align: center;"> <h:commandButton action="#{rentalContracts.showInvoices}" actionListener="#{rentalContracts.loadContractDetails}" image="/app/images/euro.gif" alt="#{msg.global_button_alt_showInvoices}" rendered="#{data.contractStatus == 'V' && data.contractCustomerNo != ''}"> <f:param id="contractDealerCodeInvoiceId" name="contractDealerCode" value=" #{data.contractDealerCode}" /> <f:param id="contractNoInvoiceId" name="contractNo" value=" #{data.contractNo}" /> <f:param id="rowIndexInvoiceId" name="rowIndex" value="#{rowIndex}" /> </h:commandButton> <rich:spacer/> </rich:column> <rich:column width="50px" style="text-align: center;" > <h:outputText id="contractDealerCodeColumn" value="#{data.contractDealerCode}" /> </rich:column> <rich:column width="50px" style="text-align: center;" label="#{msg.contracts_contractSubsidaryShort}"> <f:facet name="header"> <h:outputText value="#{msg.contracts_contractSubsidaryShort}"/> </f:facet> <h:outputText value=" #{data.contractLocation}" id="contractLocationTextID" styleClass="standardOutputText" rendered="#{data.contractLocation != ''}" > </h:outputText> <rich:spacer/> </rich:column> <rich:column width="50px" style="text-align: center;" label="#{msg.contracts_contractNo}"> <f:facet name="header"> <h:outputText value="#{msg.contracts_contractNo}"/> </f:facet> <h:outputText id="contractNoColumn" value="#{data.contractNo}" /> </rich:column> <rich:column style="text-align: center;" label="#{msg.contracts_contractStartDate}"> <f:facet name="header"> <h:outputText value="#{msg.contracts_contractStartDate}"/> </f:facet> <h:outputText value="#{data.contractStartDate}" styleClass="standardOutputText"> <f:convertDateTime pattern="dd.MM.yyyy" timeZone="CET"/> </h:outputText> </rich:column> <rich:column style="text-align: center;" label="#{msg.contracts_contractEndDate}"> <f:facet name="header"> <h:outputText value="#{msg.contracts_contractEndDate}"/> </f:facet> <h:outputText value="#{data.contractEndDate}" styleClass="standardOutputText"> <f:convertDateTime pattern="dd.MM.yyyy" timeZone="CET"/> </h:outputText> </rich:column> <rich:column style="text-align: center;" label="#{msg.contracts_contractChassisNo}"> <f:facet name="header"> <h:outputText value="#{msg.contracts_contractChassisNo}"/> </f:facet> <h:outputText value="#{data.contractChassisNo}" styleClass="standardOutputText" /> <rich:spacer/> </rich:column> <rich:column label="#{msg.chassis_location}"> <f:facet name="header"> <h:outputText value="#{msg.chassis_location}"/> </f:facet> <h:outputText value=" #{data.contractChassisLocation}" id="contractChassisLocationID" styleClass="standardOutputText" > </h:outputText> <rich:spacer/> </rich:column> <rich:column label="#{msg.contracts_contractRegistration}"> <f:facet name="header"> <h:outputText value="#{msg.contracts_contractRegistration}"/> </f:facet> <h:outputText value="#{data.contractRegistration}" /> <rich:spacer/> </rich:column> <rich:column style="text-align: center;" label="#{msg.chassis_usage}"> <f:facet name="header"> <h:outputText value="#{msg.chassis_usage}"/> </f:facet> <h:outputText value=" #{data.contractUsageShort}" styleClass="standardOutputText" /> <rich:spacer/> </rich:column> <rich:column style="text-align: center;" label="#{msg.customer_customerNo}"> <f:facet name="header"> <h:outputText value="#{msg.customer_customerNo}"/> </f:facet> <h:outputText value="#{data.contractCustomerNo}" /> <rich:spacer/> </rich:column> <rich:column label="#{msg.customer_name}"> <f:facet name="header"> <h:outputText value="#{msg.customer_name}" /> </f:facet> <h:outputText value="#{data.contractCustomerName}" /> <rich:spacer/> </rich:column> <rich:column style="text-align: center;" label="#{msg.contracts_contractStatus}" sortBy="#{data.contractStatus}" selfSorted="true" sortable="true"> <f:facet name="header"> <h:outputText value="#{msg.contracts_contractStatus}" /> </f:facet> <h:outputText value="#{data.contractStatus}" /> <rich:spacer/> </rich:column> <f:facet name="footer"> <h:outputFormat value="#{msg.contracts_table_searchResult_footer}"> <f:param value="#{user.maxRows}" /> </h:outputFormat> </f:facet> </rich:extendedDataTable> </t:div> </h:form> <%@ include file="../../jspf/globalFooter.jspf"%> </t:div> </t:documentBody> </t:document> </f:view>