Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
Javascript 获取Thymeleaf${pageContext.request.contextPath}的语法是什么_Javascript_Spring Mvc_Thymeleaf - Fatal编程技术网

Javascript 获取Thymeleaf${pageContext.request.contextPath}的语法是什么

Javascript 获取Thymeleaf${pageContext.request.contextPath}的语法是什么,javascript,spring-mvc,thymeleaf,Javascript,Spring Mvc,Thymeleaf,我一直在努力搜索类似JSTLONE的语法${pageContext.request.contextPath}, 我确实编写了一个javascript代码来更改表单上的action属性,以调用spring控制器上的edit方法,因此,问题是下面的代码在没有先调用上下文的情况下无法工作,比如${pageContext.request.contextPath}/edit.html <script th:inline="javascript"> function edit() {

我一直在努力搜索类似JSTLONE的语法
${pageContext.request.contextPath}


我确实编写了一个javascript代码来更改表单上的action属性,以调用spring控制器上的edit方法,因此,问题是下面的代码在没有先调用上下文的情况下无法工作,比如
${pageContext.request.contextPath}/edit.html

<script th:inline="javascript">
    function edit() {
        document.getElementById("user_form").action = "/edit.html";
    }
</script>

函数编辑(){
document.getElementById(“用户表单”).action=“/edit.html”;
}

那么调用Thymeleaf上下文路径的语法是什么呢?

在Thymeleaf中,JSP的
${pageContext.request.contextPath}/edit.html
等价物将是
@{/edit.html}

有关更多详细信息,请参阅Thymeleaf文档的一部分

在你的情况下,你会写:

<script th:inline="javascript">
    function edit() {
        var link = /*[[@{/edit.html}]]*/ 'test';
        document.getElementById("user_form").action = link;
    }
</script>

函数编辑(){
var link=/*[[@{/edit.html}]*/'test';
document.getElementById(“用户表单”).action=link;
}
Thymeleaf使用
/*[[
-
]]*/
语法来计算Javascript使用的变量,如果需要静态加载脚本,则不会中断脚本。有关更多详细信息,请参阅部分文档

我的和解决方案如下

在Thymeleaf中使用在元元素中写入上下文路径:

<meta name="ctx" th:content="${#httpServletRequest.getContextPath()}" />

以防万一,其他人在寻找我最初的问题时偶然发现了这个问题……为Thymeleaf页面内的页面根设置一个上下文路径变量,以便传递到外部JQuery页面。这里是如何为我工作的…与上面一样,只是留下空白

JSP的老方法

<script >var contextRoot = "${pageContext.request.contextPath}"; </script>
var contextRoot=“${pageContext.request.contextPath}”;
百里香新方法

<script th:inline="javascript"> var contextRoot = /*[[@{/}]]*/ ''; </script>
var contextRoot=/*[[@{/}]]*/'';
和更多信息的链接。。。

(同样取决于IDE,我将脚本设置为两行以上,而不是代码号的同一行。)

尝试以下方法:

var BASE_CONTEXT_PATH=$('meta[name=CONTEXT PATH]')。attr(“content”);
基本上下文路径=基本上下文路径.substr(0,基本上下文路径.length-1)

我已经尝试过javascript将它按原样放入呈现页面,不会像第一次使用一样呈现。我错过了添加
@{'/url}
解决了我的问题。谢谢。我一直在寻找类似的答案。更可取的是,保持JS的低调。对我来说,这个解决方案在访客页面上使用时会导致Thymeleaf异常(如登录)
<script th:inline="javascript"> var contextRoot = /*[[@{/}]]*/ ''; </script>