2012-07-04 24 views
5

私のプロジェクトでは、 "index.xhtml"ファイルを作成しました。プロジェクトをビルドして実行したとき、Webブラウザには何も表示されませんでした。ソースを見ると、通常のhtmlタグの代わりにソースコードが表示されます。PrimeFacesレンダリングされていません

私はでXHTMLファイルを作成しようとした:

プロジェクトを選択
  1. ..新規作成]を右クリックして。他を選択し、「ウェブ」カテゴリを選択し、JSFページ。
  2. プロジェクトを選択し、「新規」を右クリックして「その他」を選択し、「JavaServer Faces」カテゴリを選択してからJSF Pageを選択します。
  3. プロジェクトを選択して[新規]を右クリックし、[その他]を選択して[その他]カテゴリを選択し、[XHTMLページ]を選択します。

上記の方法のどれも働かなかった。

MavenのPOM

<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>ProfitV10</groupId> 
<artifactId>ProfitV10</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>war</packaging> 

<name>ProfitV10</name> 

<properties> 
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>6.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.primefaces</groupId> 
     <artifactId>primefaces</artifactId> 
     <version>3.3.1</version> 
    </dependency> 
</dependencies> 

<repositories> 
    <repository> 
     <id>prime-repo</id> 
     <name>PrimeFaces Maven Repository</name> 
     <url>http://repository.primefaces.org</url> 
     <layout>default</layout> 
    </repository> 
</repositories> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <compilerArguments> 
        <endorseddirs>${endorsed.dir}</endorseddirs> 
       </compilerArguments> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1.1</version> 
      <configuration> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.1</version> 
      <executions> 
       <execution> 
        <phase>validate</phase> 
        <goals> 
         <goal>copy</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${endorsed.dir}</outputDirectory> 
         <silent>true</silent> 
         <artifactItems> 
          <artifactItem> 
           <groupId>javax</groupId> 
           <artifactId>javaee-endorsed-api</artifactId> 
           <version>6.0</version> 
           <type>jar</type> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

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> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>faces/index.xhtml</welcome-file> 
    </welcome-file-list> 
</web-app> 

いるindex.xhtml最初のシナリオだ

<?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:p="http://primefaces.org/ui"> 
    <h:head> 
     <title>Facelet Title</title> 
    </h:head> 
    <h:body> 
     <p:spinner /> 
    </h:body> 
</html> 

。 2番目のシナリオでは、すでにNetBeans WebアプリケーションプロジェクトがPrimeFacesで正常に実行されています。 「index.html」がレンダリングされました。しかし、私は新しいJSFページを作成し、PrimeFacesネームスペース、xmlns:p="http://primefaces.org/ui"を含んでいましたが、この特定のJSFやその他の新しく作成されたJSFページはレンダリングされません。

私が紛失しているものでなければなりませんが、何がわかりません。

私の環境は以下の通りである:

  • JDK6
  • Netbeansの7.1.2
  • PrimeFaces 3.3
  • のWindows 7(32ビット)
アパッチ7.0.2

ありがとうございます。

答えて

6

ウェルカムファイルとして/index.xhtmlを使用しているため、FacesServletもその拡張にマップする必要があります。

あなたがでていること置き換える、既存の接頭辞のマッピングを必要としない場合:

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

そうでない場合は、ちょうどあなたがになってしまいます意味*.xhtmlパターンを追加します。

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

注ことFaceletsのソースコードが公開されるのを防ぐため、ほとんどの場合、*.xhtmlのマッピングが必要です。

更新:.jsfの使用と.xhtmlの違いについて

:あなたがすべてでJSF 2.1でのFacesServletを宣言していない場合

.jsfは、(デフォルトのマッピングの1つである、あなたの」これを他の人にも分かります)。これは、ディスク上の物理ファイルの拡張子(.jspまたは.xhtml)と、URLで使用される拡張子との違いに起因します。

残念ながら、JSFは別個の明示的なサーブレット(Facesサーブレット)を経由しなければならないアドオン手法の一種であったため、歴史的に異なっていました。純粋なJSPはビルドインのためこの制限はありませんでした。 JSFページは最初はJSPでのみ作成されていました。そのため、URLリクエストで.jspを使用したばかりの場合、コンテナはJSPに直接移動し、Facesサーブレットをスキップします。

Facesサーブレットを*.jsfにマップするための回避策が必要でした.Facesサーブレットは、ディスク上に.jspの拡張子を持つJSPファイルに転送します。

個人的には、単純な*.xhtml*.xhtmlマッピングが唯一の既定のオプションだと思っていますが、下位互換性のため、JSFではこれをデフォルトとして設定できないようです。

+0

真剣にも、私は数日前にそれを試みましたが、うまくいきませんでした。それとも私は思った。しかし今はそれがあります。 :D –

1

は、別のサーブレット・マッピングを追加します。ます。http:// [HOST]:[PORT]/[WEBAPP] /顔/インデックスその次のURLを使用した後

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

を。 jsf (。jsfおよびNOT .xhtml)。

+0

これは私を混乱させる部分であるこのjarファイルを追加しよう。 .jsfと.xhtmlの違いは何ですか?ほとんどの例では.xhtmlが使用されていますが、JSFページを作成すると、NetBeansでは、.xhtmlまたは「JSPファイル」を使用する「Facelets」を作成するオプションのみが許可されます。 –

+0

ファイルの名前を変更しないでください。マッピングを追加するだけです。 Urlで.jsfを使用すると、Facesサーブレットは.xhtmlファイルを同じ名前でレンダリングします。 –

2

はその後のWebContent/WEB-INF/libの下 primefaces.jarファイルを入れてビルド・パス

+0

これは私のために働いた。ありがとうございました – jbakirov

関連する問題