문제

맞춤형 표제 코터와 JSP의 다음 디스플레이 테이프 테이블과 함께 외부 페이징/정렬을 사용하고 있습니다.

<display:table id="ixnlist" name="pageScope.itemList" sort="external"
  decorator="org.mdibl.ctd.pwa.displaytag.decorator.IxnTableWrapper">

   <display:column title="Row" property="rowNum" />

   ...more columns...
</display:table> 

테이블 데코레이터에서 getListIndex ()는 전체 목록이 아닌 현재 페이지에만 행 번호를 반환합니다 (예 : 페이지 당 100 개 객체를 표시하는 경우 getListIndex ()가 페이지 상단에서 "0"을 반환합니다. "100"이 아닌 2).

/**
 * Returns the row number data for the current row.
 *
 * @return String containing row number heading.
 */
public String getRowNum() {
    final StringBuilder out = new StringBuilder(8);
    out.append(nf.format(getListIndex() + 1))
       .append('.');
    return out.toString();
}

테이블 데코레이터에서 올바른 오프셋을 반영하는 행 번호를 얻을 수 있습니까? DisplayTag ~이다 페이지 매김 링크를 포맷하는 데 사용하기 때문에 오프셋을 알고 있습니다.

DisplayTag 문서는이 질문을 다루지 않으며 $ {row_rownum} 암시 적 개체는 데코레이터의 getListIndex ()와 동일하게 작동합니다.

예, Paginumber 열을 Paginumber 열을 추가하고 Tabledecorator가 사용 가능한 경우 사용하도록하여이를 수행 할 수 있지만 오히려 그러한 종류의 메타 데이터에 대해 DAO에 의존하지는 않습니다. 다음 TableDecorator 방법은 존재하는 경우 Rownum 열을 활용합니다. 그렇지 않으면 GetListIndex ()를 사용합니다.

/**
 * Returns the row number data for the current row.
 *
 * @return String containing row number heading.
 */
public String getRowNum() {
    final StringBuilder out = new StringBuilder(8);
    final Map row = (Map) getCurrentRowObject();

    // Use 'rnum' column for external pagination if it exists.
    // Kludgy way of doing this.
    if (row.get("rnum") != null) {
        out.append(nf.format(row.get("rnum")));
    } else {
        out.append(nf.format(getListIndex() + 1));
    }
    out.append('.');
    return out.toString();
}

감사.

/mcr

도움이 되었습니까?

해결책

요청에있는 페이지 번호를 참조하여 올바른 전체 인덱스 값을 계산할 수 있어야합니다.

이런 식으로 코딩하십시오 TableDecorator 수업은 작동해야합니다.

public String getIndex() {
   int numItemsPerPage = 100;
   int page = Integer.parseInt(getPageContext().getRequest().getParameter("page"));
   int index = getListIndex();

   return ((page - 1) * numItemsPerPage) + index + 1;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top