The GitHub Actions job "Coverage" on grails-core.git/fix/12081-interceptor-model-unavailable has failed. Run started by GitHub user ruthst00 (triggered by ruthst00).
Head commit for run: 3ef55bebcb935d8697bb15ee6b7681162f3e26db / ruthes00 <[email protected]> Added a `NOTE` block and annotated code example to `grails-doc/src/en/guide/theWebLayer/interceptors/definingInterceptors.adoc` (after the existing `after()` example, lines 48–59) that explains the timing distinction between view rendering and template rendering: - View rendering (`render(view: ..., model: [...])`) — Spring MVC defers the actual render until after `after()` returns, so modifications to `model` and `view` in `after()` are reflected in the final response. This is the existing documented behavior. - Template rendering (`render(template: ..., model: [...])`) — `ResponseRenderer` processes the template and writes the response immediately inside the controller's `render()` call, before `after()` is invoked. The model is stored on the request as `GrailsApplicationAttributes.TEMPLATE_MODEL` (the fallback branch of `Interceptor#getModel()`), so `after()` can *read* it, but any modifications will not affect the already-written response. The explanation is backed by the source code (`ResponseRenderer.groovy` sets `TEMPLATE_MODEL` synchronously, `Interceptor#getModel()` reads it as a fallback) and by the passing integration test `ModelInterceptorIntSpec` that was already in the repository confirming this exact behavior. Report URL: https://github.com/apache/grails-core/actions/runs/36907114444 With regards, GitHub Actions via GitBox
