Jsf p:数据表过滤不';不能使用模板

Jsf p:数据表过滤不';不能使用模板,jsf,jsf-2,primefaces,datatable,Jsf,Jsf 2,Primefaces,Datatable,我正在尝试使用PrimeFaces框架创建一个过滤数据表。 我的问题是,数据表显示,但过滤选项不起作用,请帮助 My page.xhtml看起来像: <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.o

我正在尝试使用PrimeFaces框架创建一个过滤数据表。 我的问题是,数据表显示,但过滤选项不起作用,请帮助

My page.xhtml看起来像:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
    <ui:composition>
        <h5>
            <h:form>
                <p:dataTable var="student" value="#{studentWizard.students}" widgetVar="studentTable" emptyMessage="Aucun élève trouvé" id="tableStudent" filteredValue="#{studentWizard.filteredStudents}" >

                    <f:facet name="header">
                        <p:outputPanel>
                            <h:outputText value="Chercher tous les champs:" />
                            <p:inputText id="globalFilter" onkeyup="studentTable.filter()" style="width:150px" placeholder="Entrer le mot-clé"/>
                        </p:outputPanel>
                    </f:facet>

                    <p:column filterBy="#{student.studentCode}"  headerText="Code de l'élève" filterMatchMode="contains">
                        <h:outputText value="#{student.studentCode}"/>
                    </p:column>

                    <p:column filterBy="#{student.firstName}" headerText="Prénom" filterMatchMode="contains">
                        <h:outputText value="#{student.firstName}"/>
                    </p:column>

                    <p:column filterBy="#{student.lastName}" headerText="Nom" filterMatchMode="contains">
                        <h:outputText value="#{student.lastName}"/>
                    </p:column>

                    <p:column headerText="Modifier" >
                        <p:commandButton value="Modifier" type="submit"  ajax="false"  icon="ui-icon-update"/>
                    </p:column>
                </p:dataTable>
            </h:form>
        </h5>
    </ui:composition>
</html>

还有我的JavaBean:

@ManagedBean(name="studentWizard")
@Component
@ViewScoped
public class StudentWizard implements Serializable {

    public StudentWizard() {}

    private static final long serialVersionUID = 1L;

    private Student student;
    private List<Student> students;
    private List<Student> filteredStudents;

    @PostConstruct
    public void init() {
        students = getAllStudent();
    }

    public List<Student> getFilteredStudents() {
        return filteredStudents;
    }

    public void setFilteredStudents(List<Student> filteredStudents) {
        this.filteredStudents = filteredStudents;
    }

    @Autowired
    private StudentManager studentManager;

    public void setStudentManager(StudentManager studentManager) {
        this.studentManager = studentManager;
    }

    public Student getstudent() {
        return student;
    }

    public StudentManager getStudentManager() {
        return studentManager;
    }

    public void setstudent(Student student) {
        this.student = student;
    }

    public void save() {
        studentManager.saveStudent(student);
        student = new Student();

    }

    public List<Student> getAllStudent() {
        return studentManager.getAllStudent();
    }

    public Student getStudentById(int id) {
        return studentManager.getStudentById(id);
    }

    public List<Student> getStudents() {
        return students;
    }

    public void setStudents(List<Student> students) {
        this.students = students;
    }
}
@ManagedBean(name=“studentWizard”)
@组成部分
@视域
公共类StudentWizard实现可序列化{
公共学生向导(){}
私有静态最终长serialVersionUID=1L;
私立学生;
私人名单学生;
私人名单筛选学生;
@施工后
公共void init(){
学生=getAllStudent();
}
公共列表getFilteredStudents(){
返回筛选学生;
}
public void setFilteredStudents(列出filteredStudents){
this.filteredStudents=filteredStudents;
}
@自动连线
私人学生经理学生经理;
公共无效设置学生经理(学生经理学生经理){
this.studentManager=studentManager;
}
公立学生{
留学生;
}
公共学生经理getStudentManager(){
返回学生经理;
}
公立学校学生(学生){
这个。学生=学生;
}
公共作废保存(){
studentManager.saveStudent(student);
学生=新学生();
}
公共列表getAllStudent(){
return studentManager.getAllStudent();
}
公立学生getStudentById(int id){
返回studentManager.getStudentById(id);
}
公众学生名单{
留学生;
}
公立学校学生(名单学生){
这个。学生=学生;
}
}
这是我的主页

<h:body>
<p:layout style="min-width:400px;min-height:100px;">
<p:layoutUnit position="center" size="400"  >
</p:layoutUnit>
</p:layout>
<p:layout style="min-width:400px;min-height:500px;">
<p:layoutUnit position="west" size="244"  >
 <h5>       
<h:form>
   <p:menu toggleable="true">
     <p:submenu label="Eleves">
        <p:menuitem value="Nouvel élève" action="#{menuView.setSelectedItem(1)}"       update=":globalPanel"  />
        <p:menuitem value="Consultation" action="#{menuView.setSelectedItem(2)}" update=":globalPanel" />
    </p:submenu>
     <p:submenu label="Personnels">
     </p:submenu>
     <p:submenu label="Notes">
    </p:submenu>
     <p:submenu label="Caisses">
     </p:submenu>
    <p:submenu label="Salaires">
     </p:submenu>
    <p:submenu label="Référentiel">
     </p:submenu>
 </p:menu>
 </h:form>
</h5>
</p:layoutUnit>
<p:layoutUnit position="center">
<h:panelGroup id ="globalPanel"  >
    <h:panelGroup id="inscriptionPanel" rendered="#{menuView.selectedItem == 1}" header="Inscription" style="margin-bottom:20px">
    <ui:include src="/inscription.xhtml" />
    </h:panelGroup>  
    <h:panelGroup id="testerPanel" rendered="#{menuView.selectedItem == 2}" header="Consultation" style="margin-bottom:20px"  >
    <ui:include src="/consul.xhtml" />
    </h:panelGroup>
</h:panelGroup>
</p:layoutUnit>
</p:layout>
</h:body>


您使用的PrimeFaces版本是什么?“不起作用”是什么意思?为什么在托管bean类之前有这些丑陋的注释?如果您已经碰巧使用了Spring,为什么不选择这种方式,通过避免JSF相关的注释来停止误用JSF呢?我没有修复这个
filteredValue=“#{studentWizard.filteredStudents}”
。<代码> > < <代码> >代码> {<代码> >。如果不是键入,请考虑首先修复它。{,实际上我的代码是有效的,但如果我不使用模板,但如果我使用模板,它就不起作用!!!在你修复你的bean管理方案之前,我不能说任何事情。让Spring或JSF管理你的bean。因此,你不应该混合使用这两个框架中的注释。在当前的代码片段中,你显然假设bean
StudentWizard
是一个视图范围内的JSF托管bean,但实际上不是。它实际上是一个“单例”Springbean(Springbean的默认范围)。这些JSF注释被简单地避免/忽略,因为bean由Spring和JSF管理。待续。正因为如此,
org.springframework.web.JSF.el.SpringBeanFacesELResolver
在JSF配置文件中-
faces config.xml
。这可能是您实际问题的罪魁祸首,也可能不是,但不管怎样,您都可以我想先修一下。