GlassFish v3 上的 jspx 脚本元素

发布于 2024-08-17 17:24:54 字数 1095 浏览 10 评论 0原文

.war 由 GlassFish v3 提供。我正在尝试包含来自 jspx 的 javascript 文件。

<script type="text/javascript" src="/base/interface/Service.js"></script>

我在 http 响应中收到以下内容

<script src="/base/interface/Service.js" type="text/javascript" />

问题是它应该包含 标记。我相信这就是为什么它可以在 Chrome 上运行,但不能在 Firefox 或 IE 上运行。知道如何强制

更新:不确定这是否相关,但这是我的 jspx 文件的开头

<jsp:root version="2.0"
      xmlns:jsp="http://java.sun.com/JSP/Page"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
      xmlns:form="http://www.springframework.org/tags/form"
      xmlns:spring="http://www.springframework.org/tags"
      xmlns="http://www.w3.org/1999/xhtml">

    <jsp:output doctype-root-element="html"
            doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
            doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
    <jsp:directive.page contentType="text/html" pageEncoding="UTF-8"/> 
...

The .war is served from GlassFish v3. I am trying to include a javascript file from my jspx.

<script type="text/javascript" src="/base/interface/Service.js"></script>

I get the following in my http response

<script src="/base/interface/Service.js" type="text/javascript" />

The problem is that it should include the </script> tag. I believe this is why it works on Chrome, but not on Firefox or IE. Any idea how to force <script></script>

Update: Not sure if any of this is pertinent, but here is the beginning of my jspx file

<jsp:root version="2.0"
      xmlns:jsp="http://java.sun.com/JSP/Page"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
      xmlns:form="http://www.springframework.org/tags/form"
      xmlns:spring="http://www.springframework.org/tags"
      xmlns="http://www.w3.org/1999/xhtml">

    <jsp:output doctype-root-element="html"
            doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
            doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
    <jsp:directive.page contentType="text/html" pageEncoding="UTF-8"/> 
...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

白况 2024-08-24 17:24:54

我使用了 并保留结束标记。我认为这很丑陋,所以如果有人有更好的答案,我肯定会感兴趣。

I used <script ...><jsp:text> </jsp:text></script> and that retained the closing tag. I think this is ugly, so if anyone has a better answer I would definitely be interested.

青春如此纠结 2024-08-24 17:24:54

不幸的是,众所周知 jspx 会“最小化”空元素。在不向呈现的 HTML 添加空格的情况下防止最小化的一种方法是插入注释。例如:

<script ...><!-- keep open/close tags --></script>

尽管如此,它仍然很丑。

Unfortunately, jspx is known to "minimize" empty elements. One way to prevent the minimization without adding a space to the rendered HTML is to insert a comment. For example:

<script ...><!-- keep open/close tags --></script>

It is still ugly, though.

难如初 2024-08-24 17:24:54

一个可能更简洁的解决方案是创建一个输出正确 HTML 的自定义标签库,例如:

<m:htmlScript type="text/javascript" src="/js/jquery-1.4.4.min.js"/>

生成:

<script type="text/javascript" src="/js/jquery-1.4.4.min.js">

另一种选择是将标签封装在 CDATA 中:

<![CDATA[<script type="text/javascript" src="/js/jquery-1.4.4.min.js"></script>]]>

我在这里更详细地介绍了这个主题:
如何使用 JSPX 生成有效的 HTML? (不是 XHTML)

A potentially cleaner solution would be to create a custom taglib that outputs correct HTML, e.g.:

<m:htmlScript type="text/javascript" src="/js/jquery-1.4.4.min.js"/>

producing:

<script type="text/javascript" src="/js/jquery-1.4.4.min.js">

Another alternative would be to encapsulate the tag in CDATA:

<![CDATA[<script type="text/javascript" src="/js/jquery-1.4.4.min.js"></script>]]>

I covered this topic in more detail here:
How to produce valid HTML with JSPX? (not XHTML)

白云悠悠 2024-08-24 17:24:54

还有一个丑陋的解决方案:

<tag>${null}</tag>

Yet another ugly solution:

<tag>${null}</tag>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文