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.
fonte
2013-06-21 11:01:14
quale server delle applicazioni? – MaVRoSCy
sto usando Glassfish – marouanoviche