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.0.1 中启用 CORS

grails 3 spring security boot starter登录页面定制

如何在 JavaScript 中访问 Grails 变量?

Grails - 更改 javascript 后重新部署

哪个可用于 JavaScript 和 Grails/Java 的可互操作模板框架?

在 Grails 的 JavaScript 源代码中执行 groovy 语句