【问题标题】:using Bootsfaces in a netbeans project with Tomcat在带有 Tomcat 的 netbeans 项目中使用 Bootsfaces
【发布时间】:2015-09-11 18:09:13
【问题描述】:

我使用 Tomcat 使用 JSF 2.2 创建了一个 netbeans (7.31) 新 Web 项目,我下载了 Bootsfaces-OSP-dist-0.7.jar 并将其添加到我的项目中。 我在 Bootsfaces 快速入门指南中做了所有相关的事情,包括关于 web.xml 、 faces-config.xml 和主题 css 支持的所有内容。 我对 maven pom.xml 构建文件一无所知(使用 netbeans IDE 我不需要在 pom.xml 中执行任何操作,而且我不知道如何在使用 netbeans IDE 的项目中执行操作) 我还创建了一个 index.xhtml 页面,如快速入门指南中的相关内容(带有 <h:head/> 标签) 当我运行我的项目时,所有外观都没有任何样式。

谁能帮助我一步一步地在使用 netbeans IDE、JSF 2.2 和 tomcat 创建的项目中进行 bootsfaces 工作?

这是我的 web.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.faces</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/javax.faces.resource/*</url-pattern>
    </servlet-mapping>

    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>faces/index.xhtml</welcome-file>
    </welcome-file-list>
    <context-param>
        <param-name>BootsFaces_USETHEME</param-name>
        <param-value>true</param-value>
    </context-param>
</web-app>

`

【问题讨论】:

  • 根据您的web.xmlFacesServlet 监听的 URL 模式是什么?当您尝试打开页面时,浏览器地址栏中显示的 URL 是什么?
  • 我将 web.xml 文件添加到我的问题中,并且 URL 看起来:localhost:8080/TestBootsfaces1
  • 这5个映射和欢迎文件入口绝对是别扭。你到底是从哪里了解到的?为什么它是这样配置的?或者这都是 Netbeans 生成的和/或基于一些随机示例项目?在任何情况下,如果您在 webbrowser 中单击鼠标右键,查看源代码,您会看到 JSF 生成的 HTML 输出,还是看到未解析的原始 XHTML 源代码?
  • 大约 5 个映射我在某些谷歌搜索中阅读了 sombody 的帮助后将其粘贴到 web.xml 文件中,并且在 Netbeans 中创建新的 Web 项目时会自动生成关于欢迎文件条目。当右键单击我看到 Html 输出。
  • 将所有这些映射归结为仅在 *.xhtml 上的一个映射,并修复欢迎文件以完全摆脱 faces/ 文件夹。欢迎文件不代表主页。它表示目录的索引文件的文件名。现在重试,如果仍然失败,请告诉您在浏览器的 HTTP 流量监视器中的 HTTP 负载中观察到的内容。

标签: jsf tomcat netbeans bootsfaces


【解决方案1】:

至少有三个陷阱会导致您的主题消失:

  • 您是否将主题添加到 web.xml? xml <context-param> <param-name>BootsFaces_USETHEME</param-name> <param-value>true</param-value> </context-param>
  • 请不要在 servlet 映射中使用文件夹名称。我不确定它是否会导致 CSS 错误,但肯定会使事情变得更加复杂,并且可能会混淆资源映射器。
  • 出于某种原因,如果将 OmniFaces 的 CombinedResourceHandler 添加到 faces-config.xml 中,BootsFaces 会更好地工作。或者,您可以添加 UnmappedResourceHandler(它是 BootsFaces 的一部分)。通常,BootsFaces 需要其中之一来查找 CSS 文件和/或字体。另请参阅http://www.bootsfaces.net/integration/OmniFaces.jsf

另一种通常可行的方法是从一个演示项目开始,例如https://github.com/stephanrauh/BootsFaces-Examples

【讨论】:

  • 感谢您的回复。它适用于 BootsFaces-Examples,但这些是 maven proyects。我的问题是当我使用没有 maven 的 Netbeans IDE 创建 Web 项目时:Netbeans + New Project + Java Web + Web Application + Server:Tomcat + Framework:JavaServer Faces。我习惯在没有 maven 的情况下工作,这对我来说更容易,我希望它在没有 maven 的情况下工作。
  • 这个想法是给你一个运行的例子。您不必迁移到 Maven。只需检查正在运行的示例的项目布局并将其用作您的 Netbeans 项目的模板。理论上,只有文件夹应该不同。
【解决方案2】:

嗯,对我来说一切都很好。我做了以下步骤:

  1. 我在 Netbeans 8.0.2 中创建了一个新的 Web 项目并添加了 JSF 2.2(库,然后添加库)。
  2. 从他们的网站下载了最新的 Bootsfaces JAR 并将其添加到项目(库,然后添加 JAR/文件夹)。
  3. 创建了一个新的 JSF 文件:

    <?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:b="http://bootsfaces.net/ui"
      xmlns:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <b:navBar brand="Brand" brandHref="#" inverse="true">
            <b:navbarLinks>
            <b:navLink value="Home" href="#"></b:navLink>
            <b:navLink value="Link" href="#"></b:navLink>
            <b:navLink value="Link" href="#"></b:navLink>
            </b:navbarLinks>
        </b:navBar>
    </h:body>
    

别忘了这部分xmlns:b="http://bootsfaces.net/ui"

【讨论】:

  • 我在 netbeans 8.02 中做到了:新的 Web 项目 + 服务器:Apache Tomcat、Java EE 6 Web + 框架:JavaServer Faces、注册库:JSF 2.2。在我将 Bootsfaces-OSP-dist-0.7.jar 添加到我的项目之后。在自动生成的 index.xhtml 中,我粘贴了您在第 3 点中所说的内容,包括 xmlns:b="bootsfaces.net/ui"。但不起作用,运行时未应用样式
猜你喜欢
  • 1970-01-01
  • 2012-07-10
  • 2018-08-17
  • 1970-01-01
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多