菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻

JSF DataTable排序示例

原创
05/13 14:22 更新

JSF教程 - JSF DataTable排序示例

以下代码显示如何对DataTable进行排序。

例子

以下代码来自table-style.css。

.book-table-header{
  bbook-bottom:1px solid #BBB;
  padding:16px;
}

.book-table-odd-row{
  bbook-top:1px solid #BBB;
}

.book-table-even-row{
  bbook-top:1px solid #BBB;
}

以下代码来自demo.xhtml。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"   
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      >
    <h:head>
      <h:outputStylesheet library="css" name="table-style.css"  />
    </h:head>
    <h:body>
      
      <h1>JSF 2 dataTable sorting example</h1>
      <h:form>
        <h:dataTable value="#{book.bookList}" var="o"
          styleClass="book-table"
          headerClass="book-table-header"
          rowClasses="book-table-odd-row,book-table-even-row"
        >
 
          <h:column>
            <f:facet name="header">
              <h:commandLink action="#{book.sortByBookNo}">
                Book No
              </h:commandLink>
            </f:facet>
            #{o.bookNo}
          </h:column>
 
          <h:column>
            <f:facet name="header">
                Product Name
          </f:facet>
            #{o.productName}
          </h:column>
 
          <h:column>
            <f:facet name="header">Price</f:facet>
            #{o.price}
          </h:column>
 
          <h:column>
            <f:facet name="header">Quantity</f:facet>
            #{o.qty}
          </h:column>
 
        </h:dataTable>
        </h:form>
        
    </h:body>
</html>

下面的代码来自UserBean.java。

package com.lmonkey.common;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
 
@ManagedBean(name="book")
@SessionScoped
public class UserBean implements Serializable{
  private static final long serialVersionUID = 1L;

  private List<Book> bookArrayList;

  private boolean sortAscending = true; 
  
  private static final Book[] bookList = {
    new Book("1234", "Java", new BigDecimal("2303.0"), 3),
    new Book("3211", "Web", new BigDecimal("4232.00"), 6),
    new Book("2344", "SQL", new BigDecimal("5230.00"), 10),
    new Book("5643", "CSS", new BigDecimal("11320.00"), 9),
    new Book("4565", "HTML",new BigDecimal("232.00"), 20)
  };
  
  public UserBean(){
    bookArrayList = new ArrayList<Book>(Arrays.asList(bookList));
  }
  
  public List<Book> getBookList() {
    return bookArrayList;
  }
 
  //sort by book no
  public String sortByBookNo() {
    if(sortAscending){
      //ascending book
      Collections.sort(bookArrayList, new Comparator<Book>() {
        @Override
        public int compare(Book o1, Book o2) {
          return o1.getBookNo().compareTo(o2.getBookNo());
        }
      });
      sortAscending = false;
    }else{
      //descending book
      Collections.sort(bookArrayList, new Comparator<Book>() {
        @Override
        public int compare(Book o1, Book o2) {
          return o2.getBookNo().compareTo(o1.getBookNo());
        }
      });
      sortAscending = true;
    }
    return null;
  }
  public static class Book{
    String bookNo;
    String productName;
    BigDecimal price;
    int qty;

    public Book(String bookNo, String productName, 
        BigDecimal price, int qty) {
      this.bookNo = bookNo;
      this.productName = productName;
      this.price = price;
      this.qty = qty;
    }

    public String getBookNo() {
      return bookNo;
    }

    public void setBookNo(String bookNo) {
      this.bookNo = bookNo;
    }

    public String getProductName() {
      return productName;
    }

    public void setProductName(String productName) {
      this.productName = productName;
    }

    public BigDecimal getPrice() {
      return price;
    }

    public void setPrice(BigDecimal price) {
      this.price = price;
    }

    public int getQty() {
      return qty;
    }

    public void setQty(int qty) {
      this.qty = qty;
    }
  }
}

运行

将生成的WAR文件从目标文件夹复制到Tomcat部署文件夹,并运行Tomcat-Install-folder/bin/startup.bat。

Tomcat完成启动后,在浏览器地址栏中键入以下URL。

http://localhost:8080/simple-webapp/demo.xhtml
综合评分:9.9 评分 请对本文进行纠错,及学习过程中有困难疑惑可在此进行讨论