【问题标题】:Add MyFaces Tomahawk to a JSF 2.0 project in NetBeans将 MyFaces Tomahawk 添加到 NetBeans 中的 JSF 2.0 项目
【发布时间】:2025-12-03 12:10:02
【问题描述】:

我正在尝试将 MyFaces Tomahawk 添加到我在 NetBeans 中的 JSF 2.0 项目中。我读了很多评论,上面写着怎么做,但它不起作用有我已经完成的步骤:

1º 将所有从 Tomahawk 网站下载的 jar 库复制到 /%ProjectFolder%/web/WEB-INF/lib 中(我没有得到 lib 文件夹,所以我创建了它)

2º 使用 Netbeans 中的 Properties/Libraries/Add 文件夹将库添加到项目中

3º 在 web.xml 中添加如下代码:

 <filter>
  <filter-name>extensionsFilter</filter-name>
  <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
 </filter>

 <filter-mapping>
  <filter-name>extensionsFilter</filter-name>
  <servlet-name>Faces Servlet</servlet-name>
 </filter-mapping>

 <filter-mapping>
  <filter-name>extensionsFilter</filter-name>
  <url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
 </filter-mapping>

 <servlet>
  <servlet-name>Faces Servlet</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

4º 在 index.xhtml 的 html 标签中添加以下行:

xmlns:t="http://myfaces.apache.org/tomahawk"

好吧,我想我不需要做更多,但是当我做最后一步时,NetBeans 说我:“没有找到此命名空间的库”。

我确定我做得不好,但我不知道我需要做什么.....一些想法?

我希望这篇文章可以作为教程,因为我认为它是必要的。

谢谢^^

编辑:

我发现错误:我们需要另一个步骤:

5º 您必须下载This 示例文件。它是 War 文件中的示例集合。使用 winrar 或类似工具打开它,然后解压缩 myfaces-example-simple20-1.1.11 文件夹。之后,转到 myfaces-example-simple20-1.1.11\WEB-INF\src\META-INF\ 目录 并复制您的 web/META-INF/ 中的所有文件。然后,netbeans 会显示帮助和自动填充选项。

【问题讨论】:

  • 我尝试使用 netbeans 7.0.1,它可以正常工作。我所做的是添加一个新库,添加罐子并在应用程序上使用它们。可能是把依赖关系放在WEB-INF/lib文件夹下。
  • 那么,您的具体问题是 Netbeans 无法自动完成标签,而应用程序本身运行得非常好?你真的应该说得更清楚。

标签: jsf-2 tomahawk netbeans-7


【解决方案1】:

我遇到了同样的问题并通过以下步骤解决了:

  1. 将 tomahawk.jar 放入我的战争中。我通过右键单击战争-> 属性实现了这一点。然后Libraries -&gt; Add Jar 并选择了刚刚下载的 tomahawk.jar
  2. 像这样配置扩展过滤器:

     <filter>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
        <init-param>
            <param-name>uploadMaxFileSize</param-name>
            <param-value>20m</param-value>
        </init-param>
    </filter>
    
    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>
    
    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    

    确保扩展过滤器的 servlet-name 值与 Faces servlet 的名称相匹配。

  3. 添加了这个导入xmlns:t="http://myfaces.apache.org/tomahawk"

问题可能与您导入库的方式有关。

【讨论】:

    【解决方案2】:

    你在 web.xml 的末尾有这个吗?

        <load-on-startup>1</load-on-startup>
    </servlet>
    

    您的代码中似乎缺少(第 3 步)

    您还应该检查 servlet 部分是否重复。

    对我来说很好用。

    【讨论】: