在 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 technologyFacelets,并且JSF 有一个特殊的标签&lt;h:outputScript /&gt; 用于包含脚本。我很惊讶有人仍在使用 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 中使用包含的问题

Facelets:页面未呈现

如何在 Facelets 的 EL 布尔表达式中使用 &&?

Spring MVC 和 Facelets 等模板引擎

在 JAR 中打包 Facelets 文件(模板、包含、组合)

JSF,facelets 上的 actionlistener