如何在 JavaScript 中执行 JSTL 的 c:url 的等效操作?

2024-03-08

我有一些 JavaScript 对相对 url 进行 Ajax 调用(使用 jQuery)。

var servletUrl = "someservlet";

$.ajax({
    type: "POST",
    url: servletUrl,
    success: function(response) {
        // ...
    }
});

Where "someservlet" is:

@WebServlet("/someservlet")
public class SomeServlet extends HttpServlet

我在多个页面中使用相同的脚本。当从 servlet 上下文根中的页面使用时,相对 url 会相对于 servlet 上下文根进行解析,这是正确的。当从子文件夹中的页面使用时,URL 会相对于子文件夹进行解析,这将返回 404 错误。

我希望能够重用此 JavaScript,而不必根据它所使用的页面类型对其进行修改。理想情况下,我需要相当于 JSTL 的<c:url>标签。 JavaScript 中是否有任何内容允许我创建相对于 servlet 上下文根的 URL?


几种选择:

  1. 设置 HTML<base>具有该值的元素(注意:有自己的的优点和缺点 https://stackoverflow.com/questions/1889076/is-it-recommended-to-use-the-base-html-tag)

    <head>
        <base href="${pageContext.request.contextPath}/" />
        ...
    </head>
    

    然后在JS中:

    var contextPath = $("base").attr("href");
    var servletUrl = contextPath + "someservlet";
    // ...
    

  2. Or在某处设置数据属性

    <html data-contextPath="${pageContext.request.contextPath}/">
        ...
    </html>
    

    然后在JS中:

    var contextPath = $("html").data("contextPath");
    var servletUrl = contextPath + "someservlet";
    // ...
    

  3. Or设置一个具有该值的全局 JS 变量(不好的做法):

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

    然后在JS中:

    var servletUrl = contextPath + "someservlet";
    // ...
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JavaScript 中执行 JSTL 的 c:url 的等效操作? 的相关文章

随机推荐

  • 迭代共享点列表

    在代码中如何访问列表 例如共享点中的 MyList 然后迭代此列表项并获取该列表上特定列的值 例如 URL 列 要从列表中检索所有项目并迭代每个项目 最佳解决方案如下 假设此代码作为功能的一部分运行 public override void
  • jquery验证器表单:如何在完成远程电子邮件验证后访问表单操作

    History 我之前开始这个问题这个线程 https stackoverflow com questions 31966294 form post is omitted after jquery validation is complet
  • phoneGap - iOS - 图像可以通过 wifi 正常使用,但无法使用 3G 加载(使用 safari 工作正常)

    我遇到了一种奇怪的行为 我的应用程序的 远程托管 图像仅在这种情况下不会显示 使用3G加载 在 iPhone 上 using phonegap 在以下情况下图像加载正常 我启动该应用程序 有 wifi 即使是热点 我启动了该应用程序的网站版
  • 如何在MongoDB中指定字段进行多条件查找查询?

    这是单个文档 id firstName john lastName Doe cars id carName BMW carModel 330 carColor silver id carName Lexus carModel IS300 c
  • Python 的 3D 场景渲染器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个易于使用的 Python 3D 场景渲染器 我所寻找的只是能够 加载3D场景模型 使用正
  • 无法在azure devops中构建asp.net应用程序

    能够在本地构建应用程序 但是当我尝试在 azure Devops 管道中构建时 它显示以下错误 我已经安装了实体框架并在 Web 配置文件中添加了 system data entity design 程序集 不走运 请在此处查找管道 htt
  • Bash 确认不会等待用户输入

    我正在尝试使用 bash 脚本实现确认提示 但由于某种原因 提示不会等待用户输入 我尝试过很多例子 但到目前为止还没有运气 如果有什么区别的话我用的是MacOS 只是我尝试过的几个例子 所有复制 粘贴来自SO中的其他答案 bin bash
  • [Int] 之和导致溢出

    我有一个返回的函数 Int 我想计算列表的总和 然而 虽然每个单独的元素都小于maxBound Int 总和肯定更大 一个 人为的 例子 ghci gt sum 1 10000000 Int 2004260032 有没有办法强制 sum 累
  • 使用 Mono Touch 时,我还可以打包为标准 Window 应用程序吗?

    我知道 Mono Touch 可以使用几乎一份源代码进行开发并部署到 Android iO 和 Windows Mobile 当然会有 3 个项目和一些与平台相关的代码 但我会有重要的 C 通用代码 但我还需要我的开发能够在标准 Windo
  • Ruby 是脚本语言还是解释语言?

    我刚刚注意到在Ruby的维基百科页面中 这种语言被定义为解释性语言 我明白我的背景中可能缺少一些东西 我一直都知道不需要编译器的解释型语言和编译型语言 需要在程序执行之前进行编译 之间的区别 但是脚本语言有什么特点呢 Ruby 可以定义为脚
  • webrtc如何选择输入视频设备?

    我正在研究webRTC应用程序 我参考的是这个软件 apprtc https code google com p webrtc source browse trunk samples js apprtc https code google
  • 编程中“let”变量的语言含义[重复]

    这个问题在这里已经有答案了 所以 我是一名 javascript 程序员 新版本的JavaScript ES6 http www ecma international org ecma 262 6 0 index html有一个用于声明变量
  • OpenCV = 运算符

    我正在研究 OpenCV 但我有一个困惑 我经历过这个link http opencv willowgarage com documentation cpp core basic structures html cv mat operato
  • 矩阵问题Python

    例如 如果我有矩阵 x 1 7 U1 1 5 8 U1 2 5 5 U2 如何获取 x 中除最后一个数据之外的所有数据 然后我需要对这些元素求和 这就是我需要的 sum 1 7 1 5 8 2 5 5 Thanks EDIT2 I try
  • 如何在.net中调试测试

    我想调试我的测试 检查每个测试 看看到底哪里失败了 我正在使用 coderush 这是一个很棒的工具 但我的 1 个月试用期已过期 欢迎任何建议 正如马克所说 如果你发现一个工具确实有用 就购买它 我个人使用 ReSharper 来运行我的
  • 在子查询中聚合按位或

    给出下表 CREATE TABLE BitValues n int 是否可以计算按位或n对于子查询中的所有行 例如 如果 BitValues 包含以下 4 行 n 1 2 4 3 我希望子查询返回 7 有没有办法在不创建 UDF 的情况下内
  • 实体框架+验证注解

    我想使用验证注释 我已经有一个由实体框架实现的模型 我需要数据验证 并且我知道有一个非常好的数据注释 但我真的不知道如何正确使用它与实体框架 我应该编辑实体吗 或者我应该写单独的课程 或者我应该编写从实体继承的类 你能告诉我应该使用的最佳方
  • 通过 HttpClient 对 HTTP Post 的非字符串属性进行 UrlEncode

    这段代码是Python中的 dataParams urllib urlencode name myname id 2 dataReq urllib2 Request mylink dataParams dataRes urllib2 url
  • 在 C 中使用嵌套循环打印星号('*')菱形?

    我希望当用户输入 5 作为钻石时能够打印这样的钻石 但也适用于任何奇数且大于 0 的值 我有一个代码 可以为用户输入 5 创建一个菱形 但不适用于所有奇数输入 half size 2 1 for a 1 a lt half a top to
  • 如何在 JavaScript 中执行 JSTL 的 c:url 的等效操作?

    我有一些 JavaScript 对相对 url 进行 Ajax 调用 使用 jQuery var servletUrl someservlet ajax type POST url servletUrl success function r