jsf search显示在数据表中找到的总结果

时间:2013-06-22 13:39:03

标签: java jsf jsf-2

我想知道你是否可以指出我正确的方向,我有一个搜索方法,它工作正常,但我想显示找到的总结果,我想知道我是如何实现这样的

public List<Testpaper> Paper(String q)throws SQLException {
    List<Testpaper> test = new ArrayList<Testpaper>();

    if(ds==null)
    throw new SQLException("Can't get data source");

//get database connection
Connection con = ds.getConnection();

if(con==null)
    throw new SQLException("Can't get database connection");

PreparedStatement ps 
    = con.prepareStatement(
        "select * from test where testname like ? or subject like ?;"); 
    try {
        ps.setString(1, "%" + q + "%");
        ps.setString(2,"%"+ q + "%");
        ResultSet  result =  ps.executeQuery();        
        while (result.next()) {
            Testpaper testpaper = new Testpaper();
            testpaper.setTestname(result.getString("testname"));
            testpaper.setDescription(result.getString("description"));
            testpaper.setDateuploaded(result.getDate("dateuploaded"));
            testpaper.setLink(result.getString("link"));
            testpaper.setYear(result.getString("year"));
            testpaper.setSubject(result.getString("subject"));
            test.add(testpaper);
        }
    } catch(Exception e1) {

    }
    finally{
        try{
            con.close();
        }
        catch(Exception e2) {            
        }
    }
    return test;
}

JSF代码

<h:dataTable value="#{search.test}" id="result" var="test"
    rendered="#{not empty search.test}">
    <h:column>
        <a href="#{test.link}" title="Download">
            <h3 style="font-size: medium;font-weight: normal;color: rgb(17, 34, 204);display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; ">
                <h:outputText value="#{test.testname}" />
            </h3>
        </a>
        <h:outputText value="Created by:Ainsley Hanson/Portmore Missionar Prep School"/>
        <p style="line-height: 1.24;direction:rtl;width: 400px;">#{test.description}</p>
        <div >
            <h:outputText value="Test year: #{test.year}"
                style="color:rgb(17, 34, 204);margin-right: 10px;"/>
            <h:outputText value="Date Uploaded: #{test.dateuploaded}"
                style="color:rgb(17, 34,  );margin-right: 10px;">
                <f:convertDateTime pattern="MM.dd.yyyy HH:mm" />
            </h:outputText>                                                                 
            <h:outputText value="Subject :   #{test.subject}"
                style="font-weight:100;color:rgb(17, 34, 204);"/>
        </div>
    </h:column>
</h:dataTable>

我知道它应该显示在数据表之外,但是你应该从mysql获得结果。

3 个答案:

答案 0 :(得分:2)

您可以使用JSTL fn:length()函数获取EL中List#size()的值。

<html ... xmlns:fn="http://java.sun.com/jsp/jstl/functions">
...
<p>Total results: #{fn:length(search.test)}</p>

答案 1 :(得分:0)

如果您使用的是EL 2.2,您可以简单地利用新的EL规格,打印结果如下:

Results count : #{search.test.size()}

答案 2 :(得分:0)

我更喜欢facelets size方法而不是使用JSTL:

像#{myBean.myList.size()}

这样的东西