【问题标题】:jQuery not running in JSF ApplicationjQuery 未在 JSF 应用程序中运行
【发布时间】:2023-03-30 01:00:01
【问题描述】:

我是 jQuery 的新手。

在 netbeans 中,我有 jquery-1.7.2.js,其中所有 HTML 文件都存在。我正在创建 JSF 2.0 项目。

下面是我的代码

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:t="http://myfaces.apache.org/tomahawk"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      >
    <h:head>
        <title>Welcome to MySite.</title>
    </h:head>

    <script language="text/javascript" src="#{facesContext.externalContext.requestContextPath}/faces/jquery-1.7.2.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            alert('I am here...');
            $("#table tr:last").after("<tr><td>some</td><td>content</td></tr>");
        });

    </script>

我相信使用这段代码,每当加载文档时,我应该会收到Hi, I am here... 的警报,但是我没有收到任何警报。

另外,当我看到查看源并点击jquery-1.7.2.js 时,它会被打开。

知道为什么我没有警觉吗?

更新 1

我正在关注 here 提供的教程,但仍然没有运气。 :(

【问题讨论】:

  • 为了确定问题,请尝试使用&lt;script language="javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"&gt;&lt;/script&gt;
  • 您可能已经检查过但仍想确认一次。您提到在 jsp 源代码中,当您单击 jquery js 文件时,它会打开,但它是否有 jquery 代码或其错误报告?
  • @Daniel :它与您的选择一起使用......那么问题是什么?难道jquery文件不好?
  • @FahimParkar 发布了答案...

标签: jquery html jsf-2 alert netbeans-7


【解决方案1】:

这似乎是一个错误的文件位置,我不知道您将 jquery 文件放在您的网络应用程序中的确切位置,但无论如何它应该位于资源文件夹下的文件夹中,所以...

WebContent下添加resources文件夹

内部资源创建js文件夹

然后像这样访问文件

 <h:outputScript name="js/jquery-1.7.2.js" target="head" />

【讨论】:

  • 虽然这可能有效,但这是 library 属性的错误用法。摆脱它并使用name="js/jquery-1.7.2.js"
  • 感谢您的帮助。只是好奇,为什么我必须这样做?我相信在我早期的项目中,我不需要做这样的事情......
  • 这是对丹尼尔的回答而不是对您的问题的评论。
  • @BalusC ,为什么使用 library 是错误的?任何有机会解释这一点的参考资料,因为到目前为止我只看到它以这种方式使用(与库),例如mkyong.com/jsf2/resources-library-in-jsf-2-0
  • 库应该代表资源库,例如“primefaces”、“omnifaces”、“javax.faces”、“mylibrary”等,而不是“js”、“css”等资源类型。否则更复杂的 JSF webapps 中的高级资源库管理将失败。跨度>
【解决方案2】:

我相信 JSF 可能正在强制执行 XHTML 标准,该标准告诉它忽略您的 script 标签,因为它是 outisde head 或 body 标签。你检查过你的脚本标签是否被渲染了吗?

我学到了在处理 JSF 时最好的方法就是以 JSF 的方式来做事情。在这种情况下,它将使用 h:outputScript 标记。

此外,使用 JavaScript 的一个好的做法是将它放在一个单独的 .js 文件中,即使您打算只在一个页面上使用它。使在浏览器中调试变得更加容易。

【讨论】:

  • 不,这根本不是他的问题的原因(先自己试验一下)。再次仔细检查脚本 URL 以了解问题的原因。
  • 他确实说过浏览器正在正确加载 jQuery:“另外,当我看到查看源代码并单击 jquery-1.7.2.js 时,它会被打开。”
  • 我知道。再次检查脚本 URL。什么不属于那里?
  • 不是 JSF 专家,但我猜 JSF 不会评估普通 html 标记属性中的表达式?
【解决方案3】:

您确定以下行:“#{facesContext.externalContext.requestContextPath}/faces/jquery-1.7.2.js”?如果我是你,我会查看浏览器 Url,然后使用指向该 Url 的相对路径编写代码以指向 jquery-1.7.2.js。 另一种可能的调试方法是在当前文件夹(即当前.xhtml)中复制jquery-1.7.2.js,然后脚本标记行将是src="./jquery-1.7.2。 js”。如果您可以看到警报,则问题出在该行路径上。

【讨论】:

    猜你喜欢
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2015-03-06
    相关资源
    最近更新 更多