【问题标题】:PrimeFaces DataTable - Filtering (problem running the example)PrimeFaces DataTable - 过滤(运行示例的问题)
【发布时间】:2011-10-18 03:41:39
【问题描述】:

我正在尝试这个例子in PrimeFaces。我只了解代码的前几行。

<p:dataTable var="car" value="#{tableBean.carsSmall}"
    emptyMessage="No cars found with given criteria">

     <f:facet name="header">
        <p:outputPanel>
            <h:outputText value="Search all fields:" />
            <p:inputText id="globalFilter" onkeyup="carsTable.filter()" style="width:150px" />
        </p:outputPanel>
    </f:facet>

它可以在这里显示一个搜索框。扩展代码行将是添加列并用数据填充列。我不明白是什么

<p:column filterBy="#{car.model}" 
    headerText="Model" footerText="contains"
    filterMatchMode="contains">
    <h:outputText value="#{car.model}" />
</p:column>`

#{car.model} 是什么?它没有在java类中指定任何调用model。如何更改我的 java 类以显示列?

【问题讨论】:

    标签: java jsf datatable filtering primefaces


    【解决方案1】:

    表达式变量car被声明为dataTable的var属性。这意味着 dataTable 组件中的每个唯一行都可以通过变量car 以表达式语言引用。

    carmodel 属性是 Serializable POJO Car 的 Bean 属性。假设 Car 类有一个属性 model,表示一个 getter getModel() 和一个 setter setModel()

    &lt;p:column&gt;filterBy 属性指定此列标题将具有自己唯一的过滤文本字段,并且它将过滤 car.model 属性上的行。

    属性filterMatchMode 指定匹配条件为contains,这意味着在列过滤器字段中键入的任何文本出现都将等同于匹配记录。有关 filterMatchMode 选项的完整列表,请参阅 Primefaces 指南。

    【讨论】:

    • 好吧,我设法做了同样的例子,它没有像网站上显示的那样过滤。当我输入字符“1”时,我得到一个完全不同的过滤结果。有没有人遇到过这个问题。我也得到了这个例外Caused by: java.lang.InstantiationException: mk.war.Car
    • 这是在全局过滤器中还是在您有此问题的列过滤器中?您可以编辑您的问题并添加 mk.war.Car 类吗?
    • 这是我添加的 Car.Java 类 [code.google.com/p/primefaces/source/browse/examples/trunk/…。当我添加&lt;p:column filterBy="#{car.manufacturer}" headerText="Manufacturer" footerText="exact" filterOptions="#{tableBean.manufacturerOptions}" filterMatchMode="exact"&gt; &lt;h:outputText value="#{car.manufacturer}" /&gt; &lt;/p:column&gt; 代码时出现此错误。除此以外的所有其他列都会出现。 ——
    【解决方案2】:
    private List<Car> carsSmall;
    

    carsSmall 是一个包含 Car 对象的列表。 Car 在这里导入:

    import org.primefaces.examples.domain.Car; 
    

    Car.java Source

    Car 是支持 bean,它有一个属性 model,其中包含作为 String 的汽车型号。

    在车内#{car.model} 在这里定义:

    <p:dataTable var="car"...>
    

    dataTable 遍历列表carsSmall 中的每个元素,您可以使用var 属性中给出的名称访问当前元素(此处为:car)。所以#{car.model}调用了当前Car对象的getModel()方法。

    【讨论】:

    • 好吧,我设法做了同样的例子,它没有像网站上显示的那样过滤。当我输入字符“1”时,我得到一个完全不同的过滤结果。有没有人遇到过这个问题。我也得到这个异常原因:java.lang.InstantiationException:mk.war.Car
    • @Illep Primefaces 随机化 bean 中的 car 变量。所以颜色会和你的颜色不同,比如型号、年份等等,都是随机的。这意味着您永远不会得到与 primefaces 相同的结果,除非您将它们全部写下来并添加相同的汽车。
    • 好吧,我复制了同一个类,根本没有改变代码。我不明白这些值是随机生成的。但是,如果我在“年份列”中输入“19”,它不会过滤掉以“19”开头的所有“年份”。所以这就是我需要找到的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2012-09-22
    • 2013-12-04
    • 2014-09-08
    相关资源
    最近更新 更多