Ajax 多个开放面数据表的过滤器
我在同一个视图页面(overview.xhtml)中有3个openFacesAjax 多个开放面数据表的过滤器,ajax,jsf,openfaces,Ajax,Jsf,Openfaces,我在同一个视图页面(overview.xhtml)中有3个openFaces 第一个显示所有乐队的列表 2d显示由乐队创作的所有歌曲的列表 3d显示由乐队提供的所有节目列表 我正在使用过滤第一个数据表 行ID( 没有直接支持将筛选器附加到多个表, 但是,您可以模拟此行为。为此,您可以附加 对每个表隐藏(“显示:无”) 使用“for”属性,并为所有 通过编程实现 下面是一个简单的代码片段,演示了这个想法: <o:inputText value="#{MyBean.filterText}
- 第一个显示所有乐队的列表
- 2d显示由乐队创作的所有歌曲的列表
- 3d显示由乐队提供的所有节目列表
过滤第一个数据表
行ID(
没有直接支持将筛选器附加到多个表,
但是,您可以模拟此行为。为此,您可以附加
对每个表隐藏(“显示:无”)
使用“for”属性,并为所有
通过编程实现
下面是一个简单的代码片段,演示了这个想法:
<o:inputText value="#{MyBean.filterText}"/>
<o:commandButton value="Submit" action="#{MyBean.filterAllTables}"/>
<o:inputTextFilter for="table1" expression="#{book.bookTitle}"
value="#{MyBean.filterCriterion}" style="display: none"/>
<o:inputTextFilter for="table2" expression="#{book.bookTitle}"
value="#{MyBean.filterCriterion}" style="display: none"/>
<o:dataTable id="table1" ...>
<o:dataTable id="table2" ...>
Lol:)好的,我想知道filterCriterion的类型,实际上它是ExpressionFilterCriterion而不是String!多谢了,德米特里,你太棒了!
<o:inputText value="#{MyBean.filterText}"/>
<o:commandButton value="Submit" action="#{MyBean.filterAllTables}"/>
<o:inputTextFilter for="table1" expression="#{book.bookTitle}"
value="#{MyBean.filterCriterion}" style="display: none"/>
<o:inputTextFilter for="table2" expression="#{book.bookTitle}"
value="#{MyBean.filterCriterion}" style="display: none"/>
<o:dataTable id="table1" ...>
<o:dataTable id="table2" ...>
private String filterText; // a property w/ getter/setter
private ExpressionFilterCriterion filterCriterion; // a property w/ getter/setter
public void filterTables() {
String filterText = getFilterText();
SimplePropertyLocatorFactory.SimplePropertyLocator propertyLocator =
new SimplePropertyLocatorFactory.SimplePropertyLocator("id"); // "id" is a property name by which you'd like to filter
ExpressionFilterCriterion filterCriterion = new ExpressionFilterCriterion(
propertyLocator, FilterCondition.CONTAINS, filterText);
setFiterCriterion(filterCriterion);
}