38 lines
822 B
Markdown
38 lines
822 B
Markdown
# Handlers
|
|
|
|
Use `ThymeleafHandler` for class-based Thymeleaf routes.
|
|
|
|
## Lifecycle
|
|
|
|
- `onViewInit()` runs once at boot.
|
|
- `render(...)` runs per request.
|
|
|
|
Use `onViewInit()` to cache dependencies via `require(...)`.
|
|
|
|
## Example
|
|
|
|
```java
|
|
import models.dev.relism.flash.Request;
|
|
|
|
@GET("/dashboard")
|
|
@Template("pages/dashboard")
|
|
public final class DashboardPage extends ThymeleafHandler {
|
|
|
|
private DashboardService service;
|
|
|
|
@Override
|
|
protected void onViewInit() {
|
|
service = require(DashboardService.class);
|
|
}
|
|
|
|
@Override
|
|
public ViewModel render(Request req) {
|
|
return ViewModel.empty()
|
|
.with("title", "Dashboard")
|
|
.with("stats", service.stats());
|
|
}
|
|
}
|
|
```
|
|
|
|
Use `render(Request, Response)` when you need response access while building model variables.
|