流体模板:将 javascript 变量作为参数值传递?
fluid template: passing a javascript varible as the argument value?
对于我的流体列表模板中的 f:link 显示操作,我想将一个 javascript 变量传递给参数,基本上是 uid(将特定对象传递给 showAction),但它不按我打算的方式工作。是否有针对此特定问题的解决方法?
裸模板是这样的:
<f:for each="{termins}" as="termin">
<tr>
<td><f:link.action action="show" arguments="{termin : termin}"> {termin.mitarbeiter}</f:link.action></td>
<td><f:link.action action="show" arguments="{termin : termin}"> {termin.kunde}</f:link.action></td>
</tr>
</f:for>
</table>
JS 是在流体模板之后工作的东西。正确的顺序是,您的流体模板被解析为 HTML,然后浏览器将 HTML/JS/CSS 呈现给您。所以,你不能指望在你的流体模板中使用 JS 值。
你不能 - 而且你也不能(阅读:永远不应该)从 JS 生成 links 到控制器操作,因为它需要生成安全校验和。修改您创建的 URL 将产生安全错误。校验和的存在是为了防止 DDOS,所以它有充分的理由。
有两种选择:
- 您可以提前生成所有link
- 您可以创建一个使用 XHR 调用的 link 生成服务,以从 JS 生成必要的 link。
只有第一个适合您的用例。特别是因为您想传递始终引用数据库中对象的 UID 值 - 这意味着您可以轻松地为所有可能的详细视图生成 link 列表,然后 read/pass links 从你的 JS 到 select 正确的。
有两种可能:
1) 代替 link 使用表格并通过 POST 传输。使用 JavaScript 动态设置表单字段。这样您的变量就不会包含在 (cHash-) 校验和中。
2) 创建一个接受您的变量作为参数的 AJAX 操作。让它生成一个有效的link。使用 POST 用您的可变数据调用它。使用 JavaScript 在您的页面上显示 link。
对于我的流体列表模板中的 f:link 显示操作,我想将一个 javascript 变量传递给参数,基本上是 uid(将特定对象传递给 showAction),但它不按我打算的方式工作。是否有针对此特定问题的解决方法?
裸模板是这样的:
<f:for each="{termins}" as="termin">
<tr>
<td><f:link.action action="show" arguments="{termin : termin}"> {termin.mitarbeiter}</f:link.action></td>
<td><f:link.action action="show" arguments="{termin : termin}"> {termin.kunde}</f:link.action></td>
</tr>
</f:for>
</table>
JS 是在流体模板之后工作的东西。正确的顺序是,您的流体模板被解析为 HTML,然后浏览器将 HTML/JS/CSS 呈现给您。所以,你不能指望在你的流体模板中使用 JS 值。
你不能 - 而且你也不能(阅读:永远不应该)从 JS 生成 links 到控制器操作,因为它需要生成安全校验和。修改您创建的 URL 将产生安全错误。校验和的存在是为了防止 DDOS,所以它有充分的理由。
有两种选择:
- 您可以提前生成所有link
- 您可以创建一个使用 XHR 调用的 link 生成服务,以从 JS 生成必要的 link。
只有第一个适合您的用例。特别是因为您想传递始终引用数据库中对象的 UID 值 - 这意味着您可以轻松地为所有可能的详细视图生成 link 列表,然后 read/pass links 从你的 JS 到 select 正确的。
有两种可能:
1) 代替 link 使用表格并通过 POST 传输。使用 JavaScript 动态设置表单字段。这样您的变量就不会包含在 (cHash-) 校验和中。
2) 创建一个接受您的变量作为参数的 AJAX 操作。让它生成一个有效的link。使用 POST 用您的可变数据调用它。使用 JavaScript 在您的页面上显示 link。