在 Facelets 中使用 JavaScript 时出现 XHTML 解析错误 [重复]
Posted
技术标签:
【中文标题】在 Facelets 中使用 JavaScript 时出现 XHTML 解析错误 [重复]【英文标题】:Getting a XHTML parsing error when using JavaScript in Facelets [duplicate] 【发布时间】:2012-04-25 19:27:14 【问题描述】:我正在制作一个简单的加载栏,Facelets 似乎不喜欢我的 javascript 中的条件语句。
这是我的代码:
<div class="loader_bar">
<div></div>
</div>
<script type="text/javascript">
$(document).ready(function()
setTimeout(function()
var current_width = parseFloat($('.loader_bar div').css('width'));
var max_width = parseFloat($('.loader_bar').css('width'));
var next_width = current_width / max_width * 100 + 1;
if (next_width <= 100)
$('.loader_bar div').css('width', next_width + '%');
setTimeout(arguments.callee, 10);
, 100);
);
</script>
当我加载页面时出现以下错误:
javax.servlet.ServletException: Error Parsing /device/main/site/test.xhtml: Error
Traced[line: 69] The content of elements must consist of well-formed character data
or markup.
对应于我的JS函数“的if statement
中的操作符
if(next_width <= 100).
为什么这不起作用?
【问题讨论】:
尝试将您的 JS 包装在 或将您的文件放在外部(无论如何更好) 您是否在某种 Java 框架中使用该视图?这与 Java 有什么关系? @gillesc - 谢谢你,我试过了,我不再出现错误了,但现在javascript似乎不起作用(即我的加载栏没有填满)。我尝试将 CDATA 放在 $(document).ready... ); 之前我也只尝试过这个功能。有什么想法吗? @entek - 如问题所示,我正在使用 JSF 框架,并且在 jsfiddle 中执行此操作时没有收到任何错误,因此出现 Java 错误。谢谢。 什么框架?也许它希望视图具有某种要指定的 XML Schema? 【参考方案1】:尝试将 javascript 代码放在 CDATA 标记中
<script type="text/javascript">
<![CDATA[
$(document).ready(function()
....
]]>
</script>
【讨论】:
谢谢,我不再收到错误消息了,但现在我的 JS 无法工作(即栏没有填满)。有什么想法吗?【参考方案2】:如果您使用 JSF,您可能需要考虑将 JS 代码放入 .js 文件中。
然后,例如,如果您已将 myScripts.js
脚本文件放入 /WebContent/theme
文件夹,则可以将其包含在您的 jsp
页面中,如下所示:
<script type="text/javascript"
src='<%=renderResponse.encodeURL(renderRequest
.getContextPath() + "/theme/myScripts.js")%>'
charset="UTF-8"></script>
【讨论】:
谢谢。我有 99.9% 的时间这样做。但有时,我别无选择,需要将其放入脚本中。 (不是现在,而是其他的东西,比如 Conditional Google Analytics) 实际上,JSF 首选的view technology
是Facelets
,并且JSF 有一个特殊的标签<h:outputScript />
用于包含脚本。我很惊讶有人仍在使用 JSP 作为 JSF 的视图。
@jFrenetic 我从未使用过 Facelets,但我看不出 Facelets 和 JSP 之间有多大区别。
@UMad 那么您可能想阅读the official Java EE tutorial。 Quote: JSP 技术被认为是 JavaServer Faces 2.0 的一种已弃用的表示技术。 JSP 很少(如果曾经)在 JSF 中用于构建现代 Web 应用程序。
@jFrenetic 我正在使用 JSF 1.2,因为 websphere 产品仅支持 JSF 1.1 和 1.2。以上是关于在 Facelets 中使用 JavaScript 时出现 XHTML 解析错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Facelets 的 EL 布尔表达式中使用 &&?