Displaying Database Data over Multiple Pages
When you display a database query result based on user-provided search criteria, such as the Employee Search form in Example 12-3, you run the risk of ending up with more rows than you like to show on one page. If the amount of data is large, you may even want to set an upper limit for how many rows can ever be returned by a query. The JSTL actions let you control these things with a few attributes and a configuration setting I haven’t described yet.
Setting an upper limit for the result size
To guard
against run-away queries, you can set a context
parameter in the deployment descriptor to limit the number of rows
returned by any JSTL <sql:query>
action in
an application:
<web-app> ... <context-param> <param-name> javax.servlet.jsp.jstl.sql.maxRows </param-name> <param-value> 100 </param-value> </context-param> ... </web-app>
The javax.servlet.jsp.jstl.sql.maxRows
parameter
value sets the maximum number of rows any
<sql:query>
action in the application ever
adds to the result. You can override this value for an individual
action with the maxRows
attribute. If you want the
action to return all matching rows, set it to -1.
There’s also a Result
bean
property you can use to inform the user that the query returned more
rows than permitted by maxRows
, named
limitedByMaxRows
:
<sql:query var="result" maxRows="500"" sql="SELECT * FROM Employee" /> <c:if test="${result.limitedByMaxRows}"> Sorry, but we cannot show you all matches. Only the first 500 ...
Get JavaServer Pages, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.