 <p>You can't sort a table by default, but you have to do it programmatically. With a little bit of work you can write a reusable <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/javax/faces/event/PhaseListener.html" rel="nofollow"><code>PhaseListener</code></a> which you can control from your JSF page.</p> <p>Make sure it only <a href="http://stackoverflow.com/questions/2678207/jsf-fview-beforephase-firing-multiple-times-as-i-leave-the-page">handles a single phase</a> (for example <code>PhaseId.RESTORE_VIEW</code>) and use it to set the sort order using <a href="http://myfaces.apache.org/trinidad/trinidad-api/apidocs/org/apache/myfaces/trinidad/component/UIXTable.html#setSortCriteria%28java.util.List%29" rel="nofollow"><code>setSortCriteria</code></a>:</p> <pre><code>List&lt;SortCriterion&gt; sortCriteria = new ArrayList&lt;SortCriterion&gt;(1); String property = "myProperty"; boolean ascending = true; sortCriteria.add(new SortCriterion(property, ascending)); myCoreTable.setSortCriteria(sortCriteria); </code></pre> <p>Now you only have to add two <code>&lt;f:attribute/&gt;</code>s on your table to pass both the property name and the ascending boolean so you can create a reusable listener for all your tables.</p> <p>In your <code>&lt;tr:document&gt;</code> you can have a <code>&lt;f:attribute/&gt;</code> with a list of table ID's to process.</p>