2013-06-21 5 views
5

ho un'applicazione jsf e voglio nascondere l'url e mantenere solo il nome dell'applicazione nell'URL mentre si muove tra le pagine.come nascondere l'URL JSF dopo il nome dell'applicazione?

questo è l'URL che ho:

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

e questo è quello che voglio sempre avere:

> http://localhost:8080/PlanificationDrapageWeb/ 

come posso ottenere questo risultato ??

+0

quale server delle applicazioni? – MaVRoSCy

+0

sto usando Glassfish – marouanoviche

risposta

2

Come MaVRoSCy detto è possibile utilizzare Prettyfaces per riscrivere i tuoi URL. I loro documenti sono molto utili e molto chiari. Ecco i passaggi da seguire (senza l'approccio delle dipendenze Maven):
1) Scarica l'ultimo jar in base alla versione JSF e inseriscilo nel percorso di classe del progetto.
2) Aggiungere seguito al 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) Creare sotto WEB-INF un file: pretty-config.xml che definirà le vostre prettyfaces mappature, come questo:

<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) Ora, quando si definiscono outcome nella vostra fagioli gestiti, è necessario restituire pretty:idOfURLMapping. Ad esempio: pretty:accueil reindirizzerà alla prima pagina definita sopra e normalmente visualizzerà http://localhost:8080/PlanificationDrapageWeb/ come URL.
Infine, si noti che è necessario utilizzarlo solo se è un requisito funzionale. Altrimenti userei URL senza estensioni come BalusC menziona (il suo metodo o se vuoi funzionalità di Prettyfaces avanzate).
EDIT
Sembra che Prettyfaces non funzioni per questa situazione. Ci scusiamo per il tuo spreco di tempo.
Ora vorrei suggerire un'altra possibile soluzione, poiché la risposta di BalusC è stata cancellata.
1) Si crea un nuovo bean gestito di scope di sessione, chiamiamolo: PageManagedBean:

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

2) Creare una pagina di layout master (Facelets template):

<!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> 

Ora, quando si vuole per cambiare pagina, basta cambiare il valore PageManagedBean.includedPage.

+0

ho ricevuto questo errore quando si utilizza la soluzione Errore durante la distribuzione: eccezione durante il caricamento dell'app: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang. IllegalArgumentException: java.lang.ClassNotFoundException: com.ocpsoft.pretty.faces.config.PrettyConfigListener. Si prega di consultare server.log per maggiori dettagli. C: \ Users \ hp \ Documents \ NetBeansProjects \ PlanificationDrapage \ nbproject \ build-impl.xml: 294: il modulo non è stato distribuito. – marouanoviche

+0

si prega di vedere la mia risposta nella tua domanda su questo errore –

+0

grazie bella risposta la tua risposta risolvere il mio problema. – marouanoviche

2

Provare a utilizzare prettyFaces.

PrettyFaces è una libreria URL rewriting OpenSource con una maggiore supporto per JavaServer Faces - JSF 1.1, 1.2 e 2.0 - consentendo creazione di, gli URL segnalibro-grado.

Vedere anche questo UrlRewriteFilter with Glassfish un paio di modi su come farlo.

  1. anteriore l'istanza GlassFish con Apache mod_rewrite e l'uso
  2. Usa Tuckey's Url Rewrite Filter
+0

ho trovato solo una soluzione, ma non sto usando Maven .. hai un tutorial per usarlo con out maven ?? – marouanoviche

+0

non possiamo semplicemente aggiungere qualcosa in web.xml e nascondere l'url ?? – marouanoviche

+1

purtroppo no :) – MaVRoSCy