Grails 在 javascript 内的 GSP 站点中使用 grails var
Posted
技术标签:
【中文标题】Grails 在 javascript 内的 GSP 站点中使用 grails var【英文标题】:Grails using grails var in GSP Site inside javascript 【发布时间】:2011-10-23 04:21:47 【问题描述】:我有一个问题,在 GSP 文件的 javascript 代码中使用 grails 变量值。
例如:我有一个会话值 session.getAttribute("selectedValue"),我想在 javascript 代码部分中使用这个值。
我现在的解决方案是(在 GSP 内):
<%
def js = new String("<script type=\"text/javascript\">")
js += "var jsSelectedValue = " + session.getAttribute("selectedValue") + ";"
js += "</script>"
out << js
%>
然后我在我的 GSP 中有 javascript 块和 jQuery Stuff 等等,我需要这个值。
还有其他方法可以在纯 JavaScript 代码中访问 grails 变量吗?
第二个问题,正好相反。例如,我在下拉框中选择并单击“保存”,然后我想将值 $("#select-box").val() 存储在来自 JS-part 的会话变量中。
非常感谢您的帮助。
干杯,
马可
【问题讨论】:
您实际上并没有在上面的代码中引用任何 grails 变量。您实际上在做的是使用从模板生成 javascript 代码。该模板可以访问会话,因为它是在服务器端处理的。 【参考方案1】:为什么不使用 javascript GSP-tag?解决方案可能如下所示:
<g:javascript>
var jsSelectedValue = "$session.selectedValue";
</g:javascript>
【讨论】:
不确定其他人是否会像我一样陷入困境,但请确保 var 声明与任何带有源参数的脚本位于单独的标记中。【参考方案2】:您的第一个问题的解决方案可能如下:
更新:根据@Medrod 的解决方案进行修改:
<script type="text/javascript">
var jsSelectedValue = "$session.selectedValue";
</script>
第二个问题: 将选定的值发送到服务器并设置会话变量。
【讨论】:
感谢 Medrod 和 Zedwal!对于第二个问题的答案,如果我将所有内容发送到服务器(例如 JSON POST),每个脚本小子都可以准备一些本地表单值并准备 ajax 发布和操作......对吗?!以上是关于Grails 在 javascript 内的 GSP 站点中使用 grails var的主要内容,如果未能解决你的问题,请参考以下文章
grails 3 spring security boot starter登录页面定制