I have tried to implement the SortHeader Component like it is done in the examples, but I get the following stack:
java.lang.NullPointerException
at org.apache.myfaces.custom.sortheader.HtmlSortHeaderRenderer.encodeEnd(HtmlSortHeaderRenderer.java:63)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:331)
at org.apache.myfaces.renderkit.RendererUtils.renderChild(RendererUtils.java:450)
at org.apache.myfaces.renderkit.html.HtmlTableRendererBase.renderColumnHeaderCell(HtmlTableRendererBase.java:542)
at org.apache.myfaces.renderkit.html.ext.HtmlTableRenderer.renderColumnHeaderCell(HtmlTableRenderer.java:283)
at org.apache.myfaces.renderkit.html.HtmlTableRendererBase.renderColumnChildHeaderOrFooterRow(HtmlTableRendererBase.java:490)
at org.apache.myfaces.renderkit.html.ext.HtmlTableRenderer.renderColumnChildHeaderOrFooterRow(HtmlTableRenderer.java:225)
at org.apache.myfaces.renderkit.html.HtmlTableRendererBase.renderColumnHeaderOrFooterRow(HtmlTableRendererBase.java:477)
at org.apache.myfaces.renderkit.html.HtmlTableRendererBase.renderColumnHeaderRow(HtmlTableRendererBase.java:425)
at org.apache.myfaces.renderkit.html.HtmlTableRendererBase.renderFacet(HtmlTableRendererBase.java:339)
at org.apache.myfaces.renderkit.html.HtmlTableRendererBase.encodeBegin(HtmlTableRendererBase.java:76)
at org.apache.myfaces.renderkit.html.ext.HtmlTableRenderer.encodeBegin(HtmlTableRenderer.java:43)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:307)
at javax.faces.component.UIData.encodeBegin(UIData.java:360)
at javax.faces.component.html.HtmlDataTable.encodeBegin(HtmlDataTable.java:36)
at javax.faces.webapp.UIComponentTag.encodeBegin(UIComponentTag.java:337)
at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:250)
at org.apache.myfaces.taglib.UIComponentBodyTagBase.doEndTag(UIComponentBodyTagBase.java:55)
at org.apache.jsp.searchresult_jsp._jspx_meth_t_dataTable_0(org.apache.jsp.searchresult_jsp:1763)
at org.apache.jsp.searchresult_jsp._jspx_meth_h_form_1(org.apache.jsp.searchresult_jsp:1564)
at org.apache.jsp.searchresult_jsp._jspx_meth_f_view_0(org.apache.jsp.searchresult_jsp:245)
at org.apache.jsp.searchresult_jsp._jspService(org.apache.jsp.searchresult_jsp:165)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:415)
at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:234)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:330)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:95)
...
<t:dataTable id="resulttable" binding="#{searchDto.dataTableResult}"
value="#{searchDto.queryresult}" var="rowItem"
styleClass="smalltable_grey" width="100%" headerClass="kopf"
rowClasses="ungerade, gerade" rows="5" sortColumn="#{searchDto.sort}"
sortAscending="#{searchDto.ascending}" preserveSort="true">
<h:column>
<f:facet name="header">
<t:commandSortHeader columnName="fname" arrow="true" immediate="false">
<h:outputText value="#{msg.tablefirma}" />
</t:commandSortHeader>
</f:facet>
<h:outputText value="#{rowItem[1]}" />
</h:column>
...
</t:dataTable>
Here is my Backing Bean SearchDTO:
public class SearchDto extends SortableList {
public SearchDto()
{
super("fname");
}
public List getQueryresult() {
sort(getSort(), isAscending());
return queryresult;
}
public void setQueryresult(List queryresult) {
this.queryresult = queryresult;
}
....
SOME SETTER AND GETTER...
...
protected boolean isDefaultAscending(String sortColumn)
{
return true;
}
protected void sort(final String column, final boolean ascending)
{
Comparator comparator = new Comparator() {
public int compare(Object o1, Object o2)
{
SearchDto c1 = (SearchDto)o1;
SearchDto c2 = (SearchDto)o2;
if(column == null)
return 0;
if(column.equals("fname"))
return ascending ? c1.getFname().compareTo(c2.getFname()) : c2.getFname().compareTo(c1.getFname());
else
return 0;
}
};
Collections.sort(queryresult, comparator);
}
}
And I have implemented the whole SortableList from the Example...
The querylist is a list filled within a database query. Before I implemented the pageSortHeader everything worked fine.
I don't know, if you can see the error within this code snippet. If not, I would be terribly grateful if you could give me advice, which steps I have to make to implement the pagesortheader!
Thx!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify your system manager. This footnote also confirms that this email message has been swept for the presence of computer viruses. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

