gpt4 book ai didi

javascript - Thymeleaf 评估 Javascript 中的嵌套属性

转载 作者:行者123 更新时间:2023-12-03 08:16:13 24 4
gpt4 key购买 nike

我一直在尝试通过 javascript 访问存储在 session 中的对象上的某个变量。不幸的是,如果该对象不存在,显然我会在未知属性上收到 SpelEvaluation 异常。

例如:

${session.foo} // works
if(false){
${session.foo.bar} // does not work, foo is null. Will be evaluated anyway -> exception
}

该对象在我的项目中全局使用,因此捕获异常对我来说并不是一个真正可行的选择,因为我必须在每个映射上执行此操作。

因此,我尝试将脚本的该部分放入外部 .js 文件中,并通过 jquery $.getScript 包含它。但是此文件中任何 Thymeleaf 代码的评估都会失败。

如果我的方法是正确/推荐的,任何人都可以给我任何关于如何在外部 javascript 文件中包含 Thymeleaf 表达式的提示吗?

注意:为了便于阅读,省略了[[${foo}]]方括号。

提前致谢

最佳答案

没有找到任何关于这个特定问题的信息,所以我这样做了。

我的布局装饰器现在包含一个片段,该片段会执行条件检查基本变量(例如 ${foo})是否存在,然后相应地包含子页面。

示例代码:

layoutDecorator.html:

<div layout:fragment="test" th:include="testIncluder:: testFragment">
My Window here.
</div>

测试包含器.html:

<th:block th:switch="${foo}">
<th:block th:case="null">
<!-- safe include here -->
<th:block th:include="safeInclude :: safeFragment"/>
</th:block>
<th:block th:case="!null">
<!-- unsafe include here -->
<th:block th:include="barInclude :: barFragment"/>
</th:block>
</th:block>

barIninclude.html:

<p th:text="${foo.bar}"></p>
<script th:inline="javascript">
/*<![CDATA[*/
...

var bar = [[${foo.bar}]];

...
/*]]>*/
</script>

关于javascript - Thymeleaf 评估 Javascript 中的嵌套属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33925859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com