【问题标题】:How can I create dynamic sources (src) for link and script tags using jsp and javascript如何使用 jsp 和 javascript 为链接和脚本标签创建动态源 (src)
【发布时间】:2011-12-23 17:43:31
【问题描述】:

我有一个将参数传递给另一个 jsp 文件的 jsp 文件。此参数是字符串类型,取值是 Web 服务器路径中的文件夹名称(即http://myserver.com/Page/Folder_Name)。

在第二个 jsp 文件中,我分别使用脚本和链接标签附加了很多 js 和 css 文件。我需要使它们的路径相对于传递的参数。我的思考过程是使用 jsp 标签和 javascript 构建动态源 (src) 路径。

<head>
  <link rel="stylesheet" type="text/css" href="Folder_Name/css/style.css" />
  <script type="text/javascript" src="Folder_Name/js/script.js"></script>
</head>

除了 Folder_Name 将是动态的,以某种方式利用 JSP。至少,这是我的心态。
问题是我怎样才能做到这一点?我对其他建议持开放态度,将所述参数的初始条件传递给第二个 jsp 页面。

谢谢。

【问题讨论】:

  • 究竟是如何传递参数的? &lt;jsp:param&gt;&lt;jsp:include&gt; 内?如果您能显示一些代码,那将非常有帮助。
  • 谢谢。我通过查询字符串传递它并使用 request.getParameter("FolderName") 检索它

标签: javascript jsp dynamic hyperlink


【解决方案1】:

为什么要用 JavaScript 来做这件事?如果它已经是 JSP 页面,那么您已经在进行服务器端处理,因此您似乎想要使用 Java。例如,一旦您在变量中包含文件夹名称(例如,folderName),只需执行此操作即可输出链接:

<head>
  <link rel="stylesheet" type="text/css" href="<%=folderName%>/css/style.css" />
  <script type="text/javascript" src="<%=folderName%>/js/script.js"></script>
</head>

(注意&lt;%=folderName%&gt; 位,它在服务器上运行并输出服务器端folderName 变量的值。)或者,如果您使用支持JSP expression language 的容器,请使用${folderName}而是:

<head>
  <link rel="stylesheet" type="text/css" href="${folderName}/css/style.css" />
  <script type="text/javascript" src="${folderName}/js/script.js"></script>
</head>

如果你愿意,你当然可以使用 JavaScript 来完成这项任务,但我不确定这是否有意义。当然,您可以在服务器上使用 Rhino(用于 JVM 的 JavaScript)。如果您在谈论客户端,则基本上必须将文件夹名称回显到客户端 JavaScript 可以找到它的位置(因此,将其输出到动态生成的全局变量 - 例如 &lt;script&gt;var folderName = '&lt;%=folderName%&gt;';&lt;/script&gt; -或隐藏的input,或其他),然后让您的JavaScript通过document.createElement添加必要的脚本标签,设置它们的src,并将它们附加到headbody(没关系where),但如果您已经在进行服务器端处理,这似乎是一种非常迂回的方法。

【讨论】:

  • 呃,scriptlet? s/&lt;%=folderName%&gt;/${folderName}
  • @MattBall:当然,如果他使用 JSTL,他可以那样做。
  • 非常感谢你们俩。这是一个很好的解决方案。我提出 JavaScript 的原因是我在一个单独的 js 文件中引用路径,我也想让这些相对。如果我应该为此发布另一个问题,那么我将删除此评论并这样做。再次感谢您。
  • @user717236:如果您还需要客户端的文件夹路径,您仍然可以执行 &lt;script&gt;var folderName = '&lt;%=folderName%&gt;';&lt;/script&gt;&lt;script&gt;var folderName = '${folderName}';&lt;/script&gt; 的事情(只要文件夹名称是这样的,这将导致一个有效的 JavaScript 字符串文字,在这种特定情况下似乎很可能)。然后,您可以在客户端代码中使用该“文件夹名称”变量。缺点是它是一个全局变量,我倾向于回避全局变量,但是......
  • @T.J.Crowder:你不需要 JSTL 来使用 JSP EL。
猜你喜欢
  • 2011-11-10
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
  • 2015-03-25
  • 1970-01-01
相关资源
最近更新 更多