过滤JSF表

时间:2016-04-06 19:05:21

标签: jsf jsf-2

我想为JSF表添加过滤器,并根据过滤器值限制值。

<h:inputText id="search" value="#{accounts.searchString}"></h:inputText>

<h:commandButton value="Search" action="#{accounts.search()}">
    <f:ajax execute="search" render="output"></f:ajax>
</h:commandButton>

我认为最好的方法是将过滤器值添加到SQL查询中:

SELECT * FROM CUSTOMERS ORDER BY %S %S offset ? limit ?

完整代码:http://pastebin.com/eEeTWEqK

如何将代码实现为链接?

PS。我用这种方式修改了代码:

<div class="div_input_style">
    <h:inputText id="search" class="input_style" value="#{accounts.searchString}"></h:inputText>

    <h:commandButton class="theSpan" value="Search by title">
        <f:ajax execute="search" render="output"></f:ajax>
    </h:commandButton>
</div>
public List<AccountsObj> list(int firstRow, int rowCount, String sortField, boolean sortAscending) throws SQLException
    {
        String SqlStatement = null;

        if (ds == null)
        {
            throw new SQLException();
        }

        Connection conn = ds.getConnection();
        if (conn == null)
        {
            throw new SQLException();
        }

        String sortDirection = sortAscending ? "ASC" : "DESC";

        SqlStatement = "SELECT * FROM ACCOUNT "
            + " WHERE ? IS NULL OR ? IN (USER_NAME, FIRST_NAME, LAST_NAME)"
            + " ORDER BY %S %S offset ? limit ? ";

        String sql = String.format(SqlStatement, sortField, sortDirection);

        PreparedStatement ps = null;
        ResultSet resultSet = null;
        List<AccountsObj> resultList = new ArrayList<>();

        try
        {
            conn.setAutoCommit(false);
            boolean committed = false;

            ps = conn.prepareStatement(sql);
            ps.setString(1, searchString);
            ps.setString(2, searchString);
            ps.setInt(3, firstRow);
            ps.setInt(4, rowCount);

            resultSet = ps.executeQuery();
            resultList = ProcessorArrayList(resultSet);

            conn.commit();
            committed = true;

        }
        finally
        {
            ps.close();
            conn.close();
        }

        return resultList;
    }

0 个答案:

没有答案