【问题标题】:Error - JSF project with Maven and IntelliJ错误 - 带有 Maven 和 IntelliJ 的 JSF 项目
【发布时间】:2016-02-04 23:35:27
【问题描述】:

做了什么

我使用 IntelliJ IDE 创建了我的 Maven 项目。之后,我添加了 JSF 的模块。

发生了什么

我正在尝试使用 Tomcat 网络服务器执行我的网络应用程序。

网络服务器生成的 URL 是 http://localhost:8888/projeto-teste/web/olamundo.xhtml,但正确的格式是 `http://localhost:8888/projeto-teste/olamundo.jsf。除此之外,页面保持空白。

我的项目环境

文件夹结构

应用配置

确认我的 libs 文件夹后,IntelliJ 知道我安装了 mojarra。

helloworld.xhtml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:f="http://xmlns.jcp.org/jsf/core">
    <h:head>
        <title>Teste Inicial JSF</title>
    </h:head>
    <h:body>
        <h:outputText value="Olá Mundo" />
        <p>asdsadsa</p>
    </h:body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <!--   -->
    <display-name>projeto-teste</display-name>

    <!-- Indica que o JSF(FacesServlet) está instalado e responderá as requisições -->
    <servlet>
        <servelet-name>Faces Servlet</servelet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Mapeamento dos sufixos dos arquivos do front end -->
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>

    <!-- Indica a fase de desenvolvimento do projeto. Com o "development", exceptions terão maior descrição -->
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>

    <!-- Campos do formulário submitados em branco serão tratados como nulos -->
    <context-param>
        <param-name>javax.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
        <param-value>true</param-value>
    </context-param>

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>groupid-teste</groupId>
    <artifactId>artifacit-teste</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

我在 eclipse 上使用了同样的项目,它成功了。

【问题讨论】:

  • 你的问题很混乱。您似乎意识到错误和预期的行为。您不是基本上在问如何让 IntelliJ 在 *.jsf URL 模式而不是 *.xhtml URL 模式上打开 JSF 页面吗?如果是这样,那么为什么所有这些不必要的代码?这一切都不是由 JSF 代码或 Maven 配置引起的,而只是由 IDE 本身引起的。

标签: maven jsf intellij-idea


【解决方案1】:

在 web.xml 中,您仅将 *.jsf 映射到 Faces Servlet。

所以:

http://localhost:8888/projeto-teste/web/olamundo.xhtml - 由于 *.xhtml 未映射到 Faces Servlet,此 URL 将不会打开

http://localhost:8888/projeto-teste-livro/olamundo.jsf - 由于上下文路径错误(projeto-teste-livro 而不是 projeto-teste),此 URL 将无法打开

换句话说,在您当前的配置中,只有这个 URL 可以工作: http://localhost:8888/projeto-teste/olamundo.jsf

只要确保 IDEA 在启动 Tomcat 时会打开这个 URL。

【讨论】:

  • 正如我所说,该项目在 Eclipse 上运行。 URL 映射是正确的。 *.jsf 文件仅指定它将像 .jsf 一样执行
  • 您如何构建您正在部署的战争 - 使用 maven 还是使用 IDEA?
猜你喜欢
  • 2014-02-16
  • 2012-03-22
  • 1970-01-01
  • 2016-08-04
  • 1970-01-01
  • 2018-04-23
  • 2013-03-22
  • 2014-08-04
  • 1970-01-01
相关资源
最近更新 更多