无法使用背衬 Bean 进行过滤



我正在尝试使用backingbean函数过滤一列。

<p:dataTable id="cars" 
var="car" 
value="#{manageAllCoursesBean.courses}"
filteredValue="#{manageAllCoursesBean.filteredCourse1}"> 
<f:facet name="header">
<p:outputPanel>
<p:inputText id="globalFilter" 
onkeyup="PF('carsTable1').filter()" 
style="width:250px" 
placeholder="Entrer un mot clé"/>
</p:outputPanel>
</f:facet>
<p:column headerText="Name"
filterBy="#{car.name}"
sortBy="#{car.name}"
style="color: #400040; font-size: 10px; width: 150px; text-align:center">
<h:outputText value="#{car.name}" />
</p:column>
<p:column headerText="Teacher"
filteredBy="#{manageAllCoursesBean.findTeacherByIdCourse(car.id)}"
sortBy="#{manageAllCoursesBean.findTeacherByIdCourse(car.id)}"
style="color: #400040; font-size: 10px; width: 175px; text-align:center">
<h:outputText value="#{manageAllCoursesBean.findTeacherByIdCourse(car.id)}" />
</p:column>
</p:dataTable>

支持bean的方法是:

public String findTeacherByIdCourse(String courseId) throws IOException
{
return serviceManager.findTeacherByCourseId(courseId);
}

Name的过滤器也在工作。然而,教师的情况并非如此。

你有解决这个问题的想法吗?。非常感谢。

Primefaces showcase所述,在p:column下,无法将托管bean方法与filterBy一起使用。

我提出了这个解决方案:您可以将实体Course转换为courseModel,然后将teachers添加为字符串列表。

那么在您的托管bean中将是:

List<CourrierModel> lacmss = new ArrayList<CourrierModel>();
DataModel allDatasAssociatedCE = new ListDataModel();
//...
allDatasAssociatedCE.setWrappedData(lacmes);
for(Course c: courses)
{
CourseModel cme = new CourseModel();
cme.setCourse(c);
cme.setTeachers(findTeacherByIdCourse(c));
lacmss.add(cme);
}

HTH。

相关内容

  • 没有找到相关文章

最新更新