Java Primefaces数据表中的排序不起作用

Java Primefaces数据表中的排序不起作用,java,google-app-engine,jsf-2,primefaces,Java,Google App Engine,Jsf 2,Primefaces,排序在Primefaces datatable中不起作用。显示了我的jsf代码。我们需要在backingbean中做任何事情才能使它起作用吗 <p:dataTable id="employees" value="#{employeeList.employees}" var="employee" emptyMessage="No Employees found" rows="10" paginator="true" paginatorTemplate="{Cur

排序在Primefaces datatable中不起作用。显示了我的jsf代码。我们需要在backingbean中做任何事情才能使它起作用吗

<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和谷歌云SQL

EmployeeList.java:

public List<Employee> getEmployees() throws HibernateException, SQLException {
        List<Employee> employees = new ArrayList<Employee>();
        employees.addAll(empList());
}
public List getEmployees()抛出HibernateeException,SQLException{
List employees=new ArrayList();
employees.addAll(employist());
}
其中,在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 
        }

    }

}
@组件(“员工列表”)
@会议范围
@存储库
公共类newb实现了可序列化{
私有静态最终长serialVersionUID=-2417394435764260084L;
公共静态HibernateTemplate HibernateTemplate;
@自动连线
public void setSessionFactory(SessionFactory SessionFactory)
{       
this.hibernateTemplate=新的hibernateTemplate(sessionFactory);
}
public List getEmployees()引发HibernateeException,SQLException{
List employees=new ArrayList();
employees.addAll(employist());
返回员工;
}
@抑制警告(“未选中”)
公共列表雇员列表(){
尝试
{           
列表结果=hibernateTemplate.find(“来自员工”);
返回结果;
}
最后{
//关闭会话和用户提供的JDBC连接
}
}
}
试试这个:

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

public List<Employee> getEmployees() {
    if(employees.isEmpty()){
       employees.addAll(empList());
    }
    return employees;
}
private List employees=new ArrayList();
公开名单{
if(employees.isEmpty()){
employees.addAll(employist());
}
返回员工;
}
试试这个:

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

public List<Employee> getEmployees() {
    if(employees.isEmpty()){
       employees.addAll(empList());
    }
    return employees;
}
private List employees=new ArrayList();
公开名单{
if(employees.isEmpty()){
employees.addAll(employist());
}
返回员工;
}


如果在get中填充了列表,则它将不起作用。如果每次在get中填充列表,则“排序它”素数面将不起作用。相反,尝试将bean的viewscope设置为,并在构造函数中填充列表,这样应该可以工作。

如果在get中填充列表,则不会工作。如果每次在get中填充列表,则“排序它”素数面将不起作用。取而代之的是,尝试将bean视图范围设置为可访问的,并在构造函数中填充列表,这样应该可以工作。

如果尝试单击排序按钮,会发生什么情况?您的
标记是否在
中?单击排序箭头/列标题,对信息没有影响。是,它在
中。我用PrimeFaces 3.0.M3在GlassFish 3.1上编译您的代码,效果很好。如果您尝试单击排序按钮会发生什么?您的
标记在
中吗?单击排序箭头/列标题,对信息没有影响。是,它位于
中。我使用PrimeFaces 3.0.M3在GlassFish 3.1上编译了您的代码,并且运行良好。当
employees.addAll(empList())时,它会导致空指针异常在构造函数中。`无法实例化bean类[com.fetchinglife.application.modules.employee.view.EmployeeList]:构造函数引发异常;嵌套的异常是java.lang.NullPointerException`显示完整的EmployeeList类
getEmployees
到顶部,如您所说,然后列表项被复制,控制台显示程序连续运行而不停止,随后出现一个错误,如,
无法打开连接
。这很奇怪,因为当employees为空时,您只调用一次employees()。当
employees.addAll时,它会导致空指针异常(employist());
在构造函数中。`无法实例化bean类[com.fetchinglife.application.modules.employee.view.EmployeeList]:构造函数引发异常;嵌套异常为java.lang.NullPointerException`显示完整的EmployeeList类。当我替换
List employees=new ArrayList()时
getEmployees
到顶部,如您所说,然后列表项被复制,控制台显示程序连续运行而不停止,随后出现一个错误,如,
无法打开连接。
。这很奇怪,因为您只调用了一次empList()当员工为空时。如果我们使用CDIBeans呢?如果我们使用CDIBeans呢?