2013-06-21 15 views
5

私はjsfアプリケーションを持っていて、URLを隠しておき、ページ間を揺らしながらURLにアプリケーションの名前だけを残したいと思っています。アプリケーション名の後にJSF URLを隠す方法は?

は私が持っているURLのthats:

> http://localhost:8080/PlanificationDrapageWeb/faces/admin/adminHome.xhtml 
> http://localhost:8080/PlanificationDrapageWeb/faces/cuisson/Home.xhtml 

と私はいつも何をしたいのthatsは持っている:

> http://localhost:8080/PlanificationDrapageWeb/ 

は、どのように私はこの結果を得ることができます?

+0

どのアプリサーバーですか? – MaVRoSCy

+0

私はGlassfishを使用しています – marouanoviche

答えて

2

MaVRoSCyはあなたのURLを書き換えることPrettyfacesを使用することができます言ったように。彼らのドキュメントは非常に便利で非常に明確です。以下は、(Mavenの依存関係のアプローチなしの)手順です:
1)JSFのバージョンに応じて最新のjarをダウンロードし、プロジェクトのクラスパスに入れてください。このように、あなたのprettyfacesマッピングを定義しますpretty-config.xml
2)WEB-INF下のファイルを作成します)web.xml

<filter> 
    <filter-name>Pretty Filter</filter-name> 
    <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>Pretty Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>ERROR</dispatcher> 
</filter-mapping> 

3に以下を追加

<pretty-config xmlns="http://ocpsoft.com/prettyfaces/3.3.0" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://ocpsoft.com/prettyfaces/3.3.0 
            http://ocpsoft.com/xml/ns/prettyfaces/ocpsoft-pretty-faces-3.3.0.xsd"> 

<url-mapping id="accueil"> 
    <pattern value="/" /> 
     <view-id value="/path-to-yourpage.xhtml" />    
</url-mapping> 

<url-mapping id="error"> 
    <pattern value="/" /> 
    <view-id value="/tpath-to-yourpage2.xhtml" /> 
</url-mapping> 
</pretty-config> 

4)今すぐにoutcomeを定義する際に、あなたのpretty:idOfURLMappingを返す必要があります。たとえば、pretty:accueilは、最初に定義されたページにリダイレクトされ、通常はURLとしてhttp://localhost:8080/PlanificationDrapageWeb/と表示されます。
最後に、機能要件の場合にのみこれを使用することに注意してください。さもなければ、私はBalusCが述べたように(彼の方法か、高度なPrettyfaces機能が必要な場合)、拡張子のないURLを使用します。
EDIT
この状況では、Prettyfacesは機能しないようです。あなたの時間を無駄にして申し訳ありません。
BalusCの回答が削除されたので、もう一度解決策を提案します。
1)あなたはのは、それを呼びましょう、セッションスコープの新しいマネージドBeanを作成します:PageManagedBeanを:

public class PageManagedBean { 
    private String includedPage = "/pages/accueil.xhtml"; 
    //Setters and getters 
} 

2)は、マスターレイアウトページを作成します(Faceletsのテンプレート):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 
<h:head>   

<ui:insert name="head"></ui:insert> 
</h:head> 
<h:body> 

<div class="pagewidth"> 
<ui:include src="shared/header.xhtml"/> 
<!-- Content --> 
<div class="page_content"> 
    <div class="page_content_inner"> 
     <div class="container">     
      <ui:include id="pageLivre" src="#{pageManagedBean.includedPage}"/>     
     </div> 

    </div> 
</div> 
<div class="page_content_footer"/> 
<ui:include src="shared/footer.xhtml"/> 
</div> 
</h:body> 

を今、あなたがしたいですページを変更するには、PageManagedBean.includedPageの値を変更するだけです。

+0

ソリューションを使用するときにこのエラーが発生しました 配備中にエラーが発生しました:アプリケーションの読み込み中に例外が発生しました:java.lang.IllegalStateException:ContainerBase.addChild:start:org.apache.catalina.LifecycleException:java.lang。 IllegalArgumentException:java.lang.ClassNotFoundException:com.ocpsoft.pretty.faces.config.PrettyConfigListener。詳細については、server.logを参照してください。C:¥Users¥hp¥Documents¥NetBeansProjects¥PlanificationDrapage¥nbproject¥build-impl.xml:294:モジュールはデプロイされていません。 – marouanoviche

+0

このエラーについてのあなたの質問で私の答えを参照してください –

+0

ありがとうあなたの答えはあなたの答えを解決してください私の問題を解決します。 – marouanoviche

2

prettyFacesをお試しください。

PrettyFacesは、JavaServerの拡張 をサポートするオープンソースのURL書き換えライブラリが対向している - JSF 1.1、1.2および2.0 - ブックマーク可能な、きれいなURLの 作成を可能にします。

これもまた、これを行う方法については、このUrlRewriteFilter with Glassfishを参照してください。 Apacheで

  1. フロントあなたのGlassFishインスタンスおよび使用のmod_rewriteの
  2. 使用はTuckey's Url Rewrite Filter
+0

私はちょうど解決必要なmavenを見つけましたが、私はmavenを使用していません。あなたはmavenでそれを使用するチュートリアルを持っていますか? – marouanoviche

+0

web.xmlに何かを追加してURLを隠すことはできませんか? – marouanoviche

+1

残念ながらno :) – MaVRoSCy

関連する問題