DisplayTag 외부 페이징/정렬 및 진정한 행 번호 가져 오기
-
12-09-2019 - |
문제
맞춤형 표제 코터와 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;
}
제휴하지 않습니다 StackOverflow