I'm using a RichFaces listShuttle to let users order a list of items by multiple attributes. To display the selection between ascending and descending order only when an attribute has been selected in the listShuttle (is on the right side/part of the "targetValue"), I've created a simple method that get's called after every change to the listShuttle.
Source:
<rich:listShuttle id="sortColumnsShuttle" var="element" sourceValue="#{ticketOverviewService.availableSortColumns}" targetValue="#{ticketOverviewService.ticketOverview.sortColumns}" converter="#{showSortElementConverter}"
copyAllControlLabel="Alle hinzufügen" copyControlLabel="Hinzufügen" removeAllControlLabel="Alle entfernen" removeControlLabel="Entfernen"
bottomControlLabel="Letzter" downControlLabel="Nach unten" topControlLabel="Erster" upControlLabel="Nach oben" targetListWidth="250" sourceListWidth="200">
<rich:column>
#{element.name}
</rich:column>
<rich:column rendered="#{ticketOverviewService.showSortModeOption(element)}">
<h:selectOneMenu value="#{element.orderType}">
<s:convertEnum/>
<s:enumItem enumValue="DESCENDING" label="Absteigend"/>
<s:enumItem enumValue="ASCENDING" label="Aufsteigend"/>
</h:selectOneMenu>
</rich:column>
<a4j:support event="onlistchanged" reRender="sortColumnsShuttle" />
</rich:listShuttle>