Configuration
Query Timeout
GridDataProvider gridDataProvider = new GridDataProvider(dataSource);
// Set timeout (default: 30 seconds)
gridDataProvider.setQueryTimeout(30);
// Get current timeout
int timeout = gridDataProvider.getQueryTimeout();Load Options Validation
LoadOptionsValidator validator = LoadOptionsValidator.builder()
.maxSkip(10_000)
.maxTake(1_000)
.maxFilterDepth(10)
.maxFilterConditions(50)
.maxGroupFields(5)
.maxSortFields(5)
.build();
GridDataProvider gridDataProvider = new GridDataProvider(dataSource, validator);Validation Limits
Default Limits
| Setting | Default | Absolute Max |
|---|---|---|
| Max Skip | 100,000 | 1,000,000 |
| Max Take | 10,000 | 50,000 |
| Max Filter Depth | 20 | 50 |
| Max Filter Conditions | 100 | 500 |
| Max Group Fields | 10 | 20 |
| Max Sort Fields | 10 | 20 |
Custom Validation Example
// Conservative validation for public APIs
LoadOptionsValidator validator = LoadOptionsValidator.builder()
.maxSkip(10_000) // Only first 10K rows accessible
.maxTake(1_000) // Max 1K rows per request
.maxFilterDepth(10) // Max 10 levels of nesting
.maxFilterConditions(50) // Max 50 filter conditions
.maxGroupFields(5) // Max 5 group columns
.maxSortFields(5) // Max 5 sort columns
.build();Timeout Configuration
// Conservative timeout for public APIs
gridDataProvider.setQueryTimeout(10); // 10 seconds
// Standard timeout (default)
gridDataProvider.setQueryTimeout(30); // 30 seconds
// Relaxed timeout for reporting
gridDataProvider.setQueryTimeout(60); // 60 seconds
// Disable timeout (not recommended for production)
gridDataProvider.setQueryTimeout(0); // No timeoutLast updated on