我正在使用传统项目中的jsf 1.2和rich faces 3.3。我的要求是提供"包含"过滤富数据表中的列。我使用filterExpression ... containsIgnoreCase属性,但它不适用于富脸3.3。我终于使用以下代码剪切实现它: -
<rich:column filterMethod="#{myBean.filterStudent}">
<f:facet name="header">
Name
<h:panelGroup>
<h:outputText value="Name" />
<br />
<h:inputText value="#{myBean.filterString}" id="input">
<a4j:support event="onkeyup" ignoreDupResponses="true"
requestDelay="700" reRender="table" focus="input" />
</h:inputText>
</h:panelGroup>
</f:facet>
<h:outputText value="#{studentList.name}" />
</rich:column>
.................myBean..........................................
private String filterString = "";
// getter and setter method for filterString
public boolean filterStudent(Object current) {
Student currentStudent = (Student)current;
if (filterString.length()==0) {
return true;
}
if (currentStudent.getName().startsWith(filterString)) {
return true;
}
else {
return false;
}
}
但是该列表就像2800名学生一样,每当用户按下inputText中的一个键时,控制流到bean,列表就会被提取。这会减慢页面的大时间。是否有更好的替代方案可以过滤列表&#34;在内存中#34;。