排序不在p:datatable中工作

时间:2013-11-08 12:14:12

标签: jsf primefaces datatable

我正在使用primeface数据表,但它的排序不起作用,任何人都可以帮助我!我曾尝试在sortBy中添加#{v.elementID},但它仍无法正常工作

<p:dataTable value="#{dashboardBean.topTenMenuItem}"
                                        var="v" paginator="true"
                                        rows="#{msg['dashboard.product.mapping.datatable.rows']}">
                                        <p:column sortBy="#{v.elementId}" headerText="ID">
                                            <h:outputText value="#{v.elementId}" />
                                        </p:column>
                                        <p:column sortBy="#{v.name}" headerText="Name">
                                            <h:link value="#{v.name}" />
                                        </p:column>

                                        <p:column sortBy="#{v.updateBy}" headerText="Update By">
                                        <h:outputText value="#{v.updateBy}" />
                                        </p:column>
                                        <p:column sortBy="#{v.statusName}" headerText="Status">
                                            <h:outputText value="#{v.statusName}" />
                                        </p:column>
                                        <p:column sortBy="#{v.updateDate}" headerText="Updated On">
                                            <h:outputText value="#{v.updateDate}" />
                                        </p:column>
                                    </p:dataTable>

和bean是

public List<RecentItemDashDTO> getTopTenMenuItem() {
    Map<String, Object> sessMap = CommonUtil.getSessionMap();
    SessionDTO sessionDTO = (SessionDTO) sessMap.get(WebConstants.SESSION_DTO);
    countryCode = sessionDTO.getLoggedinCountryCode();
    String languageCode = sessionDTO.getDefaultLanguageCode();
    topTenMenuItem = dashboardService.getTopTenRecentMenuDashData(countryCode,languageCode);
    return topTenMenuItem;
}

public void setTopTenMenuItem(List<RecentItemDashDTO> topTenMenuItem) {
    this.topTenMenuItem = topTenMenuItem;
} 

2 个答案:

答案 0 :(得分:0)

我自己的经验表明,要使用此功能,您需要在BackingBean中使用List对象,并使用getter和setter。不是参考。尝试使用任何init方法,并告诉我们它是否有效。

public class DashboardBean {

private List<RecentItemDashDTO> myList;

public List<RecentItemDashDTO> getMyList()
{
    return myList;
}

public void setMyList(List<RecentItemDashDTO> myList)
{
    this.myList = myList;
}

public List<RecentItemDashDTO> getTopTenMenuItem()
{
    Map<String, Object> sessMap = CommonUtil.getSessionMap();
    SessionDTO sessionDTO = (SessionDTO)sessMap.get(WebConstants.SESSION_DTO);
    countryCode = sessionDTO.getLoggedinCountryCode();
    String languageCode = sessionDTO.getDefaultLanguageCode();
    topTenMenuItem = dashboardService.getTopTenRecentMenuDashData(countryCode, languageCode);
    return topTenMenuItem;
}

@PostConstruct
public void init()
{
    myList = getTopTenMenuItem();
}

}

XHTML:

<p:dataTable value="#{dashboardBean.myList}" ... >

答案 1 :(得分:0)

我有另一种分类解决方案。

private String initList;
public String getInitList() {
            myTopTenMenuItem=getTopTenMenuItem();
            return null;
}

和xhtml

<h:form name="form" prependId="false">
                    <h:inputHidden value="#{dashboardBean.initList}" />