如何使用JSPX生成有效的HTML? (不是XHTML)

如何使用JSPX生成有效的HTML? (不是XHTML),第1张

概述当尝试使用JSPX创建HTML页面时,您将遇到以下困难: > JSPX最小化我们不希望使用的标签,例如< div class =“foo”>< / div>成为< div class =“foo”/>这被浏览器不同地解释 > JSPX标签必须关闭,而一些HTML标签应该保持未关闭,例如< script ...>.自封闭< script ... /> IE和Firefox无法识别标签. >指定HTM 当尝试使用JsPX创建HTML页面时,您将遇到以下困难:

> JsPX最小化我们不希望使用的标签,例如< div class =“foo”>< / div>成为< div class =“foo”/>这被浏览器不同地解释
> JsPX标签必须关闭,而一些HTML标签应该保持未关闭,例如< script ...>.自封闭< script ... /> IE和firefox无法识别标签.
>指定HTML5 DOCTYPE(<!DOCTYPE HTML>)
>内联JavaScript

这个问题是对另外几个问题的回应,这一切都归结于同样的问题.我找不到全面的答案,所以我发布了我的发现结果.

相关问题:

> jspx script element on GlassFish v3
> Keep JSPX from creating self closing tags (<div></div> != <div/>)

解决方法 JsPX非常适合生成HTML和xhtml.

它归结为了解这种语言的XML性质. JsPX是XML,而HTML不是.其中一个含义是JsPX解析器“最小化”空标签,因为XML不区分自我关闭标签和空标签.这导致< script ...>和< div>< / div>标签问题但是值得注意的是,虽然JsPX文件必须是有效的XML,但它们所产生的输出则不是.因此,让JsPX文件生成HTML(不仅仅是xhtml)是完全正确的.事实上,您可以使用JsPX来生成任何文本输出,如CSV,CSS或Js,尽管这将是相当不方便的.

考虑到上述情况,最干净的解决方案似乎是使用诸如HTMLScript,HTMLdiv等标签来创建自定义taglib.这些标签可以像这样使用:

<HTML:div styleClass="foo" selfClosing="false">${message}<HTML:div>

它的HTML输出将包含结束标签,不管内容如何:

<div ></div><div >Hello</div>

像这样的taglib将允许您使用JsPX构建HTML页面,而不使用相当难看的解决方法.

构建HTML页面似乎是JsPX最常见的应用之一.有一点令人惊讶的是没有标准的HTML库. JsF有一个,但如果你使用干净的JsP它将不会帮助你.可能是第三方图书馆填补了这个差距,但找不到它.

如果你不喜欢编写自己的taglib,另一种方法是使用cdaTA:

<![cdaTA[<script type="text/JavaScript" src="/Js/jquery-1.4.4.min.Js">]]>

要么:

<![cdaTA[<script type="text/JavaScript" src="/Js/jquery-1.4.4.min.Js"></script>]]>

相关问题中的其他提案是将评论或空的< Jsp:text>里面< script>其结果相同:

<script type="text/JavaScript" src="/Js/jquery-1.4.4.min.Js"><!-- Prevent self-closing --></script>

(如Ralph所说,以上不适用于WebSphere)
要么:

<script type="text/JavaScript" src="/Js/jquery-1.4.4.min.Js"><Jsp:text></Jsp:text></script>

cdaTA也在其他几种情况下派上用场.其中一个是打印HTML5 DOCTYPE(<!DOCTYPE HTML>). JsPX不会让您将DOCTYPE声明放在您的文档中,因为它不是有效的XML. JsPX还清除了Jsp:output标签,但它打印SYstem属性,即使它是空的.解决方法是将DOCTYPE包装在页面开头的cdaTA中:

<![cdaTA[<!DOCTYPE HTML>]]>

cdaTA也可用于封装内联JavaScript.虽然这会产生解析错误,因为“<”标志:

<script type="text/JavaScript">    var x = 7 < 5;</script>

这可以正常工作:

<script type="text/JavaScript">    <![cdaTA[    var x = 7 < 5;    ]]></script>

请注意,JsPX中的cdaTA会按原样输出所有内容,但仍会评估EL表达式.因此如下:

<![cdaTA[<Jsp:Expression>"asd " + "def"</Jsp:Expression>${1 + 2}]]>

生产:

<Jsp:Expression>"asd " + "def"</Jsp:Expression>3

希望这可以帮助 :)

总结

以上是内存溢出为你收集整理的如何使用JSPX生成有效的HTML? (不是XHTML)全部内容,希望文章能够帮你解决如何使用JSPX生成有效的HTML? (不是XHTML)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1102414.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存