【问题标题】:Filter Datatable through date-range in JSF通过 JSF 中的日期范围过滤数据表
【发布时间】:2013-06-27 14:33:10
【问题描述】:

我正在使用 JSF 2.0 和 primefaces 3.5,我生成了一个数据表,其中有一个日期列,我想通过使用日期范围过滤数据表意味着两个日历,其中一个将是开始日期和第二个将代表结束日期,我的代码如下;

<p:datatable id="dTable" value="#{bean.list}" var="row">
  <p:column header="Name">
       #{row.names}
  </column>
  <p:column header="Date of Birth">
       #{row.dob}
  </column>
</datatable>

我的 java 类是

public class stud{
    public String Names;
    public Date dob;

    {getter and setter for Name and dob}
} 

我的豆类是

public class bean{
    private List<stud> list;
    public List<stud> getList() {
    try {
        list = new ArrayList<stud>();
        Connection con = Dbase.connect();
        Statement st = con.createStatement();
        ResultSet rs = st.executeQuery("Select * from students");
        while (rs.next()) {
            stud st = new stud();
            st.setNames(rs.getString(1));
            st.setDob(rs.getDate(2));
            list.add(st);
        }
        return list;
    } catch (Exception e) {
        System.out.println(e);
        return null;
    }
}

请指导我如何解决此问题。非常感谢您的指导

【问题讨论】:

    标签: jsf-2 jdbc primefaces


    【解决方案1】:

    更新(根据 cmets):

    <!-- outside from dtable -->
    <p:calendar widgetVar="var1" id="dtFrom" value="#{bean.dateFrom}"
        pattern="yyyy-MM-dd" mode="popup" showOn="button">
        <p:ajax event="dateSelect" listener="#{bean.dateFilter}" update="dTable"/>
    </p:calendar>
    
    <p:calendar widgetVar="var2" id="dtTo" value="#{bean.dateTo}"
        pattern="yyyy-MM-dd" mode="popup" showOn="button" >
        <p:ajax event="dateSelect" listener="#{bean.dateFilter}" update="dTable"/>
    </p:calendar>
    <!-- datatable code -->
    <!-- keep in your datatable this column according with your location -->    
    <p:column id="dateColumn" headerText="Date of Birth" >
      <h:outputText value="#{row.dob}" >
        <f:convertDateTime pattern="yyyy-MM-dd HH:mm" locale="es_PE" timeZone="EST"/>
      </h:outputText>
    </p:column>
    

    您需要在托管 bean 中添加这些属性:

    private Date dateFrom;
    private Date dateTo;
    //getters and setters
    //You shouldn't put logic in your getList(), just return the list. Add your logic
    // in dateFilter method and compare dateFrom and dateTo against st.getDob
    

    如果您需要将逻辑保留在 getList() 中,则从 p:calendar 中删除侦听器并保留日期的比较。

    【讨论】:

    • thanx danRod,但我的问题是我想在表格的顶部或底部添加两个日历输入,以便我可以给它一个日期范围,例如 01-01-2000 的 dob至 01-01-2005
    • @WiXXeY 那么它就像一个(日期)列有两个(日期)标题吗?您不认为将两个日期过滤器都从数据表中取出会更好吗? (然后您可以使用带有 ajax 的每个日期过滤器来更新您的数据表)
    • 那会更好,但你能指导我怎么做吗??
    猜你喜欢
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多