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>