Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带变量的Thymeleaf内联javascript表达式_Javascript_Spring Boot_Thymeleaf - Fatal编程技术网

带变量的Thymeleaf内联javascript表达式

带变量的Thymeleaf内联javascript表达式,javascript,spring-boot,thymeleaf,Javascript,Spring Boot,Thymeleaf,我将Spring Boot与Thymeleaf一起使用,我知道我可以通过以下方式在javascript中使用控制器中的变量: <script th:inline="javascript"> /*<![CDATA[*/ var username = [[${#authentication.principal.person.isSubscribedTo("random string")}]]; /*]]>*/ </script> /**/ 现在我尝试在C

我将Spring Boot与Thymeleaf一起使用,我知道我可以通过以下方式在javascript中使用控制器中的变量:

<script th:inline="javascript">

/*<![CDATA[*/
var username = [[${#authentication.principal.person.isSubscribedTo("random string")}]];
/*]]>*/

</script>

/**/
现在我尝试在CDATA注释之外使用一个局部变量,如下所示。我希望我能在这个方法中使用它

var randomString = "can i use this?";
/*<![CDATA[*/
var username = [[${#authentication.principal.person.isSubscribedTo(randomString)}]];
/*]]>*/
var randomString=“我能用这个吗?”;
/**/
这不起作用,我无法测试它,因为我的调试器无法获取该方法,并且不会返回任何错误


如何在thymeleaf javascript表达式中使用本地javascript变量?

您对何时何地发生的事情感到有点困惑

首先,服务器使用Thymeleaf为页面生成HTML和动态Javascript。在这个过程中,正如您所说的,Thymeleaf可以在SpringBean在服务器上运行时调用它

然后,一旦HTML和动态Javascript被发送到浏览器,它就会在客户端运行Javascript

唯一真正的方法是:

  • 在服务器端,在Thymeleaf内或Thymeleaf可访问的模型中生成该
    randomString
  • 如果需要在客户端生成该字符串,请让Javascript使用该信息向服务器发出单独的HTTP请求(“AJAX”)调用,然后对响应执行合理的操作。也就是说,一旦Javascript被发送到浏览器,如果您需要更多地往返到服务器,它就在Javascript上,以确保它发生,就像Thymeleaf在页面中的角色完成一样

  • 我认为您必须将变量
    randomString
    写入CDATA部分,就在您的
    username
    变量之前。在[CDATA]标记中初始化变量没有害处。:)