【问题标题】:richfaces filtering date columnRichfaces过滤日期列
【发布时间】:2013-03-31 15:42:45
【问题描述】:

我为包含字符串值的列制作了过滤器。有用。但是同样的方法行不通 日期。当我选择某个日期时,它不会过滤任何内容,但是当我在过滤器中选择空值时,它会显示所有日期。所以它可以工作,但是日期有问题:(

字符串值有代码:

    <rich:column filterValue="#{clientBean.confirmFilter}"
                 filterExpression="#{fn:containsIgnoreCase(client.conferm,
 clientBean.confirmFilter)}">
                    <f:facet name="header">
                        <h:panelGroup>
                            <h:outputText value="Filter " />
                            <h:selectOneMenu value="#{clientBean.confirmFilter}">
                                <f:selectItems value="#{clientBean.listConfirmFilter}" />
                                <a4j:ajax render="table" execute="@this" event="change" />
                            </h:selectOneMenu>
                        </h:panelGroup>
                    </f:facet>
                    <h:outputText value="#{clientBean.getConfirmValue(client.conferm)}" />  
                </rich:column>  

日期代码:

    <rich:column filterValue="#{clientBean.dataOpenFilter}"
                 filterExpression="#{fn:containsIgnoreCase(client.dataOpen, 
clientBean.dataOpenFilter)}">
                    <f:facet name="header">
                        <h:panelGroup>
                             <a4j:outputPanel layout="block"> 
                                <rich:calendar value="#{clientBean.dataOpenFilter}" locale="ru/RU" 
                                    popup="true" datePattern="dd/MM/yyyy" 
                                    showApplyButton="false" cellWidth="24px" cellHeight="22px"   
                                    disabled="false"  > 
                                <a4j:ajax render="table" execute="@this" event="change" />
                                </rich:calendar> 
                            </a4j:outputPanel>
                        </h:panelGroup>
                    </f:facet>
                    <h:outputText value="#{client.dataOpen}" locale="ru/RU" >
                        <f:convertDateTime pattern="dd/MM/yyyy" />
                    </h:outputText>
                </rich:column>

还有我的 managedBean:

private String confirmFilter;
    private List<SelectItem> listConfirmFilter;
    private Date dataOpenFilter;
    ...

    public String getConfirmFilter() {
        return confirmFilter;
    }

    public void setConfirmFilter(String confirmFilter) {
        this.confirmFilter = confirmFilter;
    } 

    public List<SelectItem> getListConfirmFilter() {
        listConfirmFilter = new ArrayList<SelectItem>();
        listConfirmFilter.add(new SelectItem("",""));
        listConfirmFilter.add(new SelectItem("N","Not confirmed"));
        listConfirmFilter.add(new SelectItem("Y","Confirmed"));
        return listConfirmFilter;
    }

    public Date getDataOpenFilter() {
        return dataOpenFilter;
    }

    public void setDataOpenFilter(Date dataOpenFilter) {
        this.dataOpenFilter = dataOpenFilter;
    }

我解决了这个问题:

public Filter<Client> getDateOpenFilterImpl() {
            return new Filter<Client>() {
                public boolean accept(Client client) {
                    Date dataOpenFilter = getDataOpenFilter();
                    if (dataOpenFilter == null ||  
                                    dataOpenFilter.compareTo((Date)client.getDataOpen())==0) {
                        return true;
                    }
                    return false;
                }
            };
     }

<rich:column filter="#{clientBean.dateOpenFilterImpl}" ...

【问题讨论】:

  • 您正在尝试使用String 过滤的方法按Date 过滤? fn:containsIgnoreCase(client.dataOpen, clientBean.dataOpenFilter)
  • 我把评论作为答案,这样这个问题就可以得到接受的答案。请接受。谢谢。

标签: java jsf richfaces


【解决方案1】:

您似乎正在尝试使用String 过滤的方法来过滤Date

fn:containsIgnoreCase(client.dataOpen, clientBean.dataOpenFilter)

【讨论】:

  • 谢谢。是的你是对的。我在顶部写了如何解决问题。
猜你喜欢
  • 2021-12-04
  • 1970-01-01
  • 2020-08-03
  • 2015-08-28
  • 2011-06-10
  • 2020-04-16
  • 2018-11-14
  • 2019-11-20
  • 1970-01-01
相关资源
最近更新 更多