我有一个带有Velocity模板的Spring Boot项目,所有配置和工作正常…
在我的速度视图中,我有以下内容;
<head>
<!-- some other meta tags here -->
<meta name="csrf-token" content="$!_csrf.token">
</head>
这是我在chrome中检查时输出的样子;
然而,在同一页上,我有一个看起来像这样的表格;
<form method="post" action="/post/to/wherever">
<input type="hidden" id="csrf" name="$!_csrf.parameterName" value="$!_csrf.token" data-header="$!_csrf.headerName"/>
<!-- other fields here -->
</form>
并且浏览器检查显示如下;
所以很明显,_csrf属性在表单主体中被注入和解析,而不是在head元标记中。
问:什么会导致这样的事情?
好吧,我最终发现这里发生的事情是由于一个非常简单的疏忽。
我有<代码>
#include("/pages/common/header.vm")
好吧,对于速度的用户来说,很明显,上面只包括模板原样(即所有内容都翻译为文本),并且不会解析其中声明的任何速度上下文属性。所以我只需要将其更改为以下内容
#parse("/pages/common/header.vm")
这可确保适当解析header. vm
模板中声明的任何速度属性并相应地读取值。
我最初打算删除这个问题,认为一开始就不应该问这个问题,但我意识到,嗯,这是StackOverflow,最好只是指出错误并为其他人节省一些时间。本质上,让世界对每个人来说都变得更美好…干杯!