나는 이것을 작동시킬 수 있었다.
기본적으로 SortMeta 개체에 UIColumn을 제공해야 작동 할 수 있습니다. 렌더링시의 초기 정렬에서, bean에서 컴포넌트를 찾아서 sortMeta에 할당해야했습니다. 다음은
는 @PostConstruct
/*
* method to build initial sort order for multisort
*/
private void buildSortOrder() {
UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
UIComponent column = viewRoot.findComponent("transDataTable:joinDateTime");
SortMeta sm1 = new SortMeta();
sm1.setSortBy((UIColumn)column);
sm1.setSortField("joinDateTime");
sm1.setSortOrder(SortOrder.DESCENDING);
preSortOrder.add(sm1);
}
I는이 작업을 수행하는 올바른 방법입니다 확실하지 오전에 내 콩 코드라고보기는 xhtml 여기
<p:dataTable id="transDataTable" var="trans"
value="#{myBean.transModel}" paginator="true" rows="50"
paginatorAlwaysVisible="false" lazy="true"
sortMode="multiple" sortBy="#{myBean.preSortOrder}"
resizableColumns="true">
<p:column headerText="User" sortBy="#{trans.user.name}" >
#{trans.user.name}
</p:column>
<p:column headerText="Company" sortBy="#{trans.companyName}">
#{trans.companyName}
</p:column>
<p:column headerText="Join Date" id="joinDateTime"
sortBy="#{trans.joinDateTime}" >
<h:outputText value="#{trans.joinDateTime}" />
</p:column>
</p:dataTable>
에 내 코드이지만, 공장. 빈 코드에서 ID를 사용해야 할 때 사람들이 조심하지 않을 때 버그가 생길 수 있으므로 일반적으로 불편합니다.
빠른 힌트를 위해 @CagatayCivici에게 감사드립니다.
sortMeta의 목록을 sortBy에 제공해야합니다. –
확인. 이전에 우리는 문자열의 이름 문자열을 제공하고 있었지만 지금은 이해할 수 있도록 콩의 List 개체에 바인드했습니다. 감사! 이것을 시도 할 것입니다. –
@CagatayCivici
preSortOrder를'private void buildSortOrder() { 으로 만들었습니다. SortMeta sm1 = new SortMeta(); \t \t sm1.setSortField ("resolvedDateTime"); m1.setSortOrder (SortOrder.DESCENDING); preSortOrder.add (sm1); \t \t \t }'하지만 NPE가 DataTableRenderer의 방법은'encodeColumnHeader sortIcon = resolveDefaultSortIcon (columnSortByVe, meta.getColumn(). getValueExpression ("sortBy") meta.getSortOrder()로 액세스되고 UIColumn BCS 발생한다. 이름()); ' –