在外部链接的javascript中渲染EL变量

时间:2013-12-05 10:04:19

标签: javascript spring jsp el

我们如何解决链接的javascripts中的EL变量?可能吗?有什么选择?

这就是我正在做的事情:

<a id="apiCaller" href="">API Caller </a>

<div id="returnData">
</div>

<script type="text/javascript" src="${pageContext.request.contextPath}/resources/js/api.js" ></script>

在api.js中:(其中$ {pageContext.request.contextPath}无法解析)

$("#apiCaller").click(function(event){
    event.preventDefault();
    $.ajax({
        method: "GET",
        url: "${pageContext.request.contextPath}/myAPI",
        success: function(returnData){
              alert(returnData.data);
            $("#returnData").empty.append(returnData.data);
        }
    });
});

回答(意识到这是一个相关的问题): https://stackoverflow.com/a/5158157/1435070

2 个答案:

答案 0 :(得分:2)

我通常在每个页面上包含的内联脚本块中处理此问题。将上下文根放在全局变量中。例如,要在我的博客中获取上下文根,我使用:

<强> base_js.jsp

<script>
        var ttRoot = "${pageContext.request.contextPath}" ;
</script>

此片段是通过模板包含在每个页面上的片段的一部分:

<!-- Load Base Javascript Javascript -->
<jsp:include page="/WEB-INF/views/fragments/base_js.jsp" />

然后在构建url时,我使用这个全局变量:

 var url = ttRoot + "/secure/resume/manager/skills/" + skillId + "/tags";

答案 1 :(得分:1)

您可以做的是将contextURL的值放在任何span标记或隐藏元素中。

<span id="contextUrl" style="display:none;">${pageContext.request.contextPath}</span>

OR

<input type="hidden" id="contextUrl" value="${pageContext.request.contextPath}" />

在你的JS中,用它的ID或Class属性获取它的值。

$("#apiCaller").click(function(event){
event.preventDefault();
var contextURL = $("#contextUrl").text();
var formUrl = contextURL+'/myAPI';
$.ajax({
    method: "GET",
    url: formUrl,
    success: function(returnData){
          alert(returnData.data);
        $("#returnData").empty.append(returnData.data);
    }
});
});