--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ColumnTag.java	
+++ a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ColumnTag.java	
@@ -318,7 +318,14 @@ public class ColumnTag extends BodyTagSupport {
             }
             return RequestContext.SORT_ASC;
         }
-        return sortDir;
+        else {
+            if (sortDir.equals(RequestContext.SORT_ASC)) {
+                return RequestContext.SORT_ASC;
+            }
+            else {
+                return RequestContext.SORT_DESC;
+            }
+        }
     }
 
     protected void renderUnbound() throws JspException {
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/DataSetManipulator.java	
+++ a/java/code/src/com/redhat/rhn/frontend/taglibs/list/DataSetManipulator.java	
@@ -351,15 +351,24 @@ public class DataSetManipulator {
 
         String sortKey = ListTagUtil.makeSortByLabel(uniqueName);
         String sortDirectionKey = ListTagUtil.makeSortDirLabel(uniqueName);
-        String sortAttribute = request.getParameter(sortKey);
-        String sortDir = request.getParameter(sortDirectionKey);
+        String sortAttribute = StringUtils.defaultString(request.getParameter(sortKey));
+        String sortDir = StringUtils.defaultString(request.getParameter(sortDirectionKey));
+        if (!sortDir.equals(RequestContext.SORT_ASC) &&
+                !sortDir.equals(RequestContext.SORT_DESC)) {
+            sortDir = ascending ? RequestContext.SORT_ASC : RequestContext.SORT_DESC;
+        }
         if (AlphaBarHelper.getInstance().isSelected(uniqueName, request)) {
             Collections.sort(dataset, new DynamicComparator(alphaCol,
                     RequestContext.SORT_ASC));
         }
         else if (!StringUtils.isBlank(sortAttribute)) {
-            Collections.sort(dataset, new DynamicComparator(sortAttribute,
-                    sortDir));
+            try {
+                Collections.sort(dataset, new DynamicComparator(sortAttribute, sortDir));
+            }
+            catch (IllegalArgumentException iae) {
+                Collections.sort(dataset, new DynamicComparator(defaultSortAttribute,
+                        sortDir));
+            }
         }
         else if (!StringUtils.isBlank(defaultSortAttribute)) {
             Collections.sort(dataset, new DynamicComparator(defaultSortAttribute,
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java	
+++ a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java	
@@ -28,6 +28,7 @@ import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.PageContext;
 import javax.servlet.jsp.tagext.BodyTagSupport;
 
+import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang.StringUtils;
 
 import com.redhat.rhn.common.localization.LocalizationService;
@@ -812,16 +813,25 @@ public class ListTag extends BodyTagSupport {
         sortByInputTag.setAttribute("name", sortByLabel);
         sortByInputTag.setAttribute("id",
                 ListTagUtil.makeSortById(getUniqueName()));
-        sortByInputTag.setAttribute("value", StringUtils.defaultString(
-                pageContext.getRequest().getParameter(sortByLabel)));
+        sortByInputTag.setAttribute("value", StringEscapeUtils.escapeHtml(StringUtils
+                .defaultString(pageContext.getRequest().getParameter(sortByLabel))));
 
         HtmlTag sortByDirTag = new HtmlTag("input");
         sortByDirTag.setAttribute("type", "hidden");
         sortByDirTag.setAttribute("name", sortDirLabel);
         sortByDirTag.setAttribute("id", ListTagUtil.
                                         makeSortDirId(getUniqueName()));
-        sortByDirTag.setAttribute("value", StringUtils.defaultString(
-                pageContext.getRequest().getParameter(sortDirLabel)));
+        String dir = StringUtils.defaultString(pageContext.getRequest().getParameter(
+                sortDirLabel));
+        if (dir.equals(RequestContext.SORT_ASC)) {
+            sortByDirTag.setAttribute("value", RequestContext.SORT_ASC);
+        }
+        else if (dir.equals(RequestContext.SORT_DESC)) {
+            sortByDirTag.setAttribute("value", RequestContext.SORT_DESC);
+        }
+        else {
+            sortByDirTag.setAttribute("value", "");
+        }
 
         ListTagUtil.write(pageContext, sortByInputTag.render());
         ListTagUtil.write(pageContext, sortByDirTag.render());
