Принятый ответ не похож на работу для Thymeleaf 3; вот обновление. Обратите внимание, что я использую Spring; это может не работать для приложений, отличных от Spring.
<table>
<tr th:each="var : ${#vars.getVariableNames()}">
<td th:text="${var}"></td>
<td th:text="${#vars.getVariable(var)}"></td>
</tr>
<!-- Adding these manually because they're considered special.
see https://github.com/thymeleaf/thymeleaf/blob/thymeleaf-3.0.3.RELEASE/src/main/java/org/thymeleaf/context/WebEngineContext.java#L199
-->
<tr>
<td>param</td>
<td th:text="${#vars.getVariable('param')}"></td>
</tr>
<tr>
<td>session</td>
<td th:text="${#vars.getVariable('session')}"></td>
</tr>
<tr>
<td>application</td>
<td th:text="${#vars.getVariable('application')}"></td>
</tr>
</table>
Это говорит, что я сделал создан автономный Bean, что делает вещи немного красивее и отвалов на входе вместо в HTML:
@Component
public class ThymeleafDumper {
private Logger log = LoggerFactory.getLogger(ThymeleafDumper.class);
public void dumpToLog(WebEngineContext ctx) {
log.debug("Thymeleaf context: {}", formatThisUpNicely(ctx));
}
// ... etc
}
formatThisUpNicely
Где можно использовать ctx.getVariableNames()
, положить результаты в SortedMap
, экспорт в json
, что угодно. Не забывайте эти три «специальные» переменные!
Затем выставить его экземпляр как @ModelAttribute
в Controller
или его ControllerAdvice
:
@ControllerAdvice
public class SomeControllerAdvice {
@Autowired
private ThymeleafDumper thymeleafDumper;
@ModelAttribute("dumper")
public ThymeleafDumper dumper() {
return this.thymeleafDumper;
}
}
Тогда в моем шаблоне перспективе:
<div th:text="${dumper.dumpToLog(#vars)}"/>
Фантастический - это на самом деле дает еще больше, чем я хотел: включает в себя все весенние бобы, доступные для просмотров, не только модели, которые я вложил. Очень полезная информация! –
@ the4dK вы спасатель жизни! – Ali