2010-06-23 54 views
2

如何使用java EL在jsf中基於列表大小呈現數據表?如何使用java EL在jsf中基於列表大小呈現數據表?

+0

「基於列表大小「?你能詳細說明一下嗎?數據表即默認自動執行該操作。另請參閱[使用數據表](http://balusc.blogspot.com/2006/06/using-datatables.html)。 – BalusC 2010-06-24 00:06:58

+0

就像我如何使用#{someBean.searchLists.size> 2},假設searchResults在someBean中是List的類型。我在服務器端自動添加少量記錄,所以我想在顯示搜索結果之前檢查大小。現在,我將大小複製到bean中的一個變量,並將它用作#{someBean.searchListSize> 1} – gekrish 2010-06-24 00:26:02

回答

14

方式三:

  1. 添加一個額外的getter。

    public int getSearchListSize() { 
        return searchList.size(); 
    } 
    

    <h:dataTable rendered="#{bean.searchListSize > 2}"> 
    
  2. 使用JSTLfn:length()功能。安裝JSTL,如果還沒有完成(剛落,在/WEB-INF/libjstl-1.2.jar)和JSP的頂部聲明fn的taglib如下:

    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 
    

    和按如下方式使用它:

    <h:dataTable rendered="#{fn:length(bean.searchList) > 2}"> 
    
  3. 使用JBoss EL(「增強EL「)作爲JSF EL實現。它與標準的JSF EL實現向後兼容。在/WEB-INF/lib下降jboss-el.jar並宣佈在web.xml以下,假設你使用Mojarra JSF實現:

    <context-param>  
        <param-name>com.sun.faces.expressionFactory</param-name> 
        <param-value>org.jboss.el.ExpressionFactoryImpl</param-value> 
    </context-param> 
    

    這樣你就可以直接訪問非getter方法:

    <h:dataTable rendered="#{bean.searchList.size() > 2}"> 
    
+0

我還沒有嘗試過2和3。我正在使用第一個。感謝BalusC。 – gekrish 2010-06-24 05:29:57

+0

相關https://stackoverflow.com/questions/7120526/how-to-display-value-of-listsize-in-jsf-el。 (總結,第三種技術現在可以在大多數現代服務器上運行,而無需添加新的JAR。) – DavidS 2015-07-20 20:25:13