Using sort.xhtml in dataTable
sandman202 Mar 30, 2009 12:56 AMI am trying to switch over to use the sort.xhtml, but I am having a problem. It does not seem to change the initial sort I have defined in my java class. It just executes the original query.
Here is a portion of the dataTable.
<rich:dataTable id="phoneList" var="_phone" value="#{phoneList.resultList}" rendered="#{not empty phoneList.resultList}"> <h:column> <f:facet name="header"> <s:decorate template="/layout/sort.xhtml"> <ui:param name="entityList" value="#{phoneList}"/> <ui:param name="propertyLabel" value="Company"/> <!-- doesn't support two sort fields --> <ui:param name="propertyPath" value="uzer.company"/> </s:decorate> </f:facet> #{_phone.uzer.company} </h:column> <h:column> <f:facet name="header"> <a4j:htmlCommandLink styleClass="columnHeader" reRender="phoneList" value="Name #{phoneList.order=='uzer.name asc' ? messages.down : ( phoneList.order=='uzer.name desc' ? messages.up : '' )}"> <f:param name="phoneListOrder" value="#{phoneList.order=='uzer.name asc' ? 'uzer.name desc' : 'uzer.name asc'}"/> </a4j:htmlCommandLink> </f:facet> #{_phone.uzer.name} </h:column> <h:column> <f:facet name="header"> <a4j:htmlCommandLink styleClass="columnHeader" reRender="phoneList" value="Type #{phoneList.order=='type asc' ? messages.down : ( phoneList.order=='type desc' ? messages.up : '' )}"> <f:param name="phoneListOrder" value="#{phoneList.order=='type asc' ? 'type desc' : 'type asc'}"/> </a4j:htmlCommandLink> </f:facet> #{_phone.type} </h:column> <h:column> <f:facet name="header"> <s:decorate template="/layout/sort.xhtml"> <ui:param name="entityList" value="#{phoneList}"/> <ui:param name="propertyLabel" value="Number"/> <!-- doesn't support two sort fields --> <ui:param name="propertyPath" value="phone.phoneNumber"/> </s:decorate> </f:facet> #{_phone.phoneNumber} </h:column> <h:column> <f:facet name="header"> <ui:include src="/layout/sort.xhtml"> <ui:param name="entityList" value="#{personList}"/> <ui:param name="propertyLabel" value="Number"/> <ui:param name="propertyPath" value="phone.phoneNumber"/> </ui:include> </f:facet> #{_phone.phoneNumber} </h:column> <h:column> <f:facet name="header">Action</f:facet> <s:link view="/role/admin/#{empty from ? 'Phone' : from}.xhtml" value="Select" id="phone" propagation="none"> <f:param name="phoneFrom" value="#{phoneFrom}"/> <f:param name="phoneId" value="#{_phone.id}"/> </s:link> </h:column> </rich:dataTable>
The PhoneList.java:
@Name("phoneList") public class PhoneList extends EntityQuery<Phone> { private static final long serialVersionUID = -8080460493565303154L; private static final String[] RESTRICTIONS = { // tab list selection "phone.uzer.id = #{uzerHome.uzerId}", // non-tab list selection "lower(phone.uzer.company) like concat(lower(#{phoneList.phone.uzer.company}),'%')", "lower(phone.uzer.name) like concat(lower(#{phoneList.phone.uzer.name}),'%')", "lower(phone.type) like concat(lower(#{phoneList.phone.type}),'%')", "lower(phone.phoneNumber) like concat(lower(#{phoneList.phone.phoneNumber}),'%')", "lower(phone.ext) like concat(lower(#{phoneList.phone.ext}),'%')", }; private Phone phone = new Phone(); public PhoneList() { this.setMaxResults(25); this.setEjbql("select phone from Phone phone"); this.setOrder("phone.type asc"); this.setRestrictionExpressionStrings(Arrays.asList(RESTRICTIONS)); } public Phone getPhone() { return phone; } }
Could someone please tell me what I am doing wrong?
Thanks,
Scott