The GitHub Actions job "Code Analysis" 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/36907115882

With regards,
GitHub Actions via GitBox

Reply via email to