显示标签外部排序覆盖?

时间:2016-10-05 20:27:01

标签: sorting displaytag

我正在使用display tag和spring mvc。 基本上,我有一个像这样的简单表。请注意使用外部

    <display:table id="tableId" name="data" sort="external" defaultsort="1" sort="external">
  <display:column property="id" title="ID" sortable="true" sortName="id" />
  <display:column property="firstName" sortable="true" sortName="firstName" title="First Name" />
  <display:column property="lastName" sortable="true" sortName="lastName" title="Last Name" />
  <display:column property="address" sortable="true" sortName="address" title="Email Address"/>
</display:table>

在控制器端,我得到排序列索引和排序顺序。

String c = request.getAttribute(new ParamEncoder("tableId").encodeParameterName(TableTagParameters.PARAMETER_SORT));

获取订单(ASC / DESC):

  String order = request.getAttribute(new ParamEncoder("tableId").encodeParameterName(TableTagParameters.PARAMETER_ORDER)));

这一切都很好。对于最后一步,我使用自定义比较器对列表进行排序,并将其放回到将数据映射到表中的“data”属性中(参见display tag“name”属性)。

public void populateModel(Model model, HttpRequest request){
     String c = request.getAttribute(new ParamEncoder("tableId").encodeParameterName(TableTagParameters.PARAMETER_SORT));

    // here the comparator is computed with column and order value eg
    Comparator comp = new DefaultComparator();
    if(c == 1){
         comp  = new NumericComparator();
    }
    List<Employe> list = Collection.sort(dao.getEmployee(), comp );
    model.addAttribute("data", list);

    // here the list is sorted properly

    return "mypage";           
 }

不幸的是,最终jsp中的显示并不关心列表中的顺序。看起来有些东西覆盖了默认和字母数字排序器...所以即使我使用我的NumericComparator,列仍然是错误排序的,我认为“list”对象已经被显示之前的librairie排序了。

总结:

  1. 获取显示标记索引:确定

  2. 对列表进行排序并将其放回jsp: ok (列表根据控制器中的显示标记参数排序)

  3. 使用显示标记显示jsp一侧的排序列表: KO (库不关心列表顺序,使用默认排序对其进行排序)

  4. 在没有显示标记的情况下显示jsp端的排序列表:确定

  5. 有任何解释,有什么不对或丢失吗?

0 个答案:

没有答案