Сортировка не работает в Primefaces datatable - PullRequest
0 голосов
/ 04 января 2012

Сортировка не работает в Primefaces datatable.Мой код jsf показан. Нам нужно сделать что-нибудь в бэк-бине, чтобы он работал?

<p:dataTable id="employees" value="#{employeeList.employees}"
     var="employee" emptyMessage="No Employees found" rows="10"
     paginator="true"
     paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink}  {PageLinks}      {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
     rowsPerPageTemplate="5,10,15" rowIndexVar="rowIndex">

        <p:column sortBy="#{employee.firstName}">
           <f:facet name="header">
           <h:outputText value="First Name" />
           </f:facet>
           <h:outputText value="#{employee.firstName}">
           </h:outputText>
        </p:column>
            <p:column sortBy="#{employee.lastName}">
           <f:facet name="header">
           <h:outputText value="Last Name" />
           </f:facet>
           <h:outputText value="#{employee.lastName}" />
        </p:column>
    </p:dataTable>

Моя версия Primefaces - 3.0.M3 сJSF2 и Google Cloud SQL

EmployeeList.java:

public List<Employee> getEmployees() throws HibernateException, SQLException {
        List<Employee> employees = new ArrayList<Employee>();
        employees.addAll(empList());
}

Где в empList () я написал запрос для получения всех сотрудников и возвращает всех сотрудников.

EmployeeList.java

@Component("employeeList")
@SessionScoped
@Repository
public class newb implements Serializable {
    private static final long serialVersionUID = -2417394435764260084L;


    public static HibernateTemplate hibernateTemplate;

    @Autowired
    public void setSessionFactory(SessionFactory sessionFactory)
    {       
        this.hibernateTemplate = new HibernateTemplate(sessionFactory);     
    }

    public List<Employee> getEmployees() throws HibernateException, SQLException {

        List<Employee> employees = new ArrayList<Employee>();       
        employees.addAll(empList());        
        return employees;
    }


    @SuppressWarnings("unchecked")
    public List<Employee> empList() {       
        try
        {           
            List <Employee> result =  hibernateTemplate.find("from Employee"); 
            return result;
        }
        finally { 
            //close the session and user-supplied JDBC connection 
        }

    }

}

Ответы [ 2 ]

4 голосов
/ 29 марта 2012

Это не будет работать, если у вас есть список, заполненный в вашем get.Сортировка это простые лица не будет работать, если список заполняется каждый раз в get.Вместо этого попробуйте сделать область видимости bean-компонента и заполнить список в конструкторе, тогда он должен работать.

1 голос
/ 04 января 2012

попробуйте это:

private List<Employee> employees = new ArrayList<Employee>();

public List<Employee> getEmployees() {
    if(employees.isEmpty()){
       employees.addAll(empList());
    }
    return employees;
}
...