Jsf p:数据表过滤不';不能使用模板
我正在尝试使用PrimeFaces框架创建一个过滤数据表。 我的问题是,数据表显示,但过滤选项不起作用,请帮助 My page.xhtml看起来像: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
<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。因此,你不应该混合使用这两个框架中的注释。在当前的代码片段中,你显然假设beanStudentWizard
是一个视图范围内的JSF托管bean,但实际上不是。它实际上是一个“单例”Springbean(Springbean的默认范围)。这些JSF注释被简单地避免/忽略,因为bean由Spring和JSF管理。待续。正因为如此,org.springframework.web.JSF.el.SpringBeanFacesELResolver
在JSF配置文件中-faces config.xml
。这可能是您实际问题的罪魁祸首,也可能不是,但不管怎样,您都可以我想先修一下。