jsf primefaces数据表过滤问题

Sve*_*ven 7 jsf primefaces

我正在使用primefaces及其数据表.几列是日期或货币.如果我试图过滤那些,那就有尴尬的行为.当我开始输入时,过滤器一直工作到第一个分隔符(例如日期点,所以它只过滤11个.下一个字符让表格显示没有条目).

是否可以应用日期转换器?

这是我现在的代码:

<p:column filterBy="#{cou.startDate}"
    headerText="#{text['date']}"
    filterMatchMode="contains" 
    sortBy="#{cou.startDate}" >
        <h:outputText value="#{cou.startDate}" >
             <f:convertDateTime pattern="dd.MM.yyyy" />
        </h:outputText>
</p:column> 
Run Code Online (Sandbox Code Playgroud)

And*_*dre 2

据我所知,您不能使用转换器来获取过滤值。但是,您可以在 bean/service/dao 逻辑中处理该问题。

如果过滤器列与某些名称(如 startDate 或 endDate)匹配,您可以对逻辑进行硬编码并使用 SimpleDateFormat 来解析该值。更通用的方法是使用反射来获取与列关联的类,如果是日期,则使用 SimpleDateFormat,如果是数字,则使用 DecimalFormat,依此类推。

当然,如果您将该查询传播到数据库,您将无法使用 like 运算符。如果您使用数字,则需要比较是否相等(这同样适用于日期)。如果你正在寻找内存中的东西,你就必须稍微改变你的逻辑。但应该不会太糟糕。如果您可以发布一些支持 bean/服务代码,我想我可能会更有帮助;)