2013-06-21 5 views
5

tôi có một ứng dụng jsf và tôi muốn ẩn url và chỉ giữ tên của ứng dụng trong URL trong khi swiching giữa các trang.cách ẩn URL JSF sau tên ứng dụng?

thats url mà tôi có:

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

và đó là những gì tôi muốn lúc nào cũng có:

> http://localhost:8080/PlanificationDrapageWeb/ 

làm thế nào tôi có thể nhận được kết quả này ??

+0

máy chủ ứng dụng nào? – MaVRoSCy

+0

Tôi đang sử dụng Glassfish – marouanoviche

Trả lời

2

Như MaVRoSCy nói rằng bạn có thể sử dụng Prettyfaces để viết lại URL của bạn. Tài liệu của họ rất hữu ích và rất rõ ràng. Dưới đây là các bước để làm theo (không có cách tiếp cận phụ thuộc Maven):
1) Tải xuống jar mới nhất tùy thuộc vào phiên bản JSF của bạn và đặt nó vào đường dẫn lớp dự án của bạn.
2) Thêm sau để 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) Tạo dưới WEB-INF một tập tin: pretty-config.xml mà sẽ xác định prettyfaces bạn ánh xạ, như thế này:

<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) Bây giờ khi xác định outcome tại của bạn đậu được quản lý, bạn nên trả lại pretty:idOfURLMapping. Ví dụ: pretty:accueil sẽ chuyển hướng đến trang được xác định đầu tiên ở trên và thông thường nó sẽ hiển thị http://localhost:8080/PlanificationDrapageWeb/ làm URL.
Cuối cùng, lưu ý rằng bạn chỉ nên sử dụng tính năng này nếu đó là yêu cầu chức năng. Nếu không, tôi sẽ sử dụng các URL mà không có phần mở rộng như BalusC đã đề cập (phương pháp của mình hoặc nếu bạn muốn các chức năng nâng cao của Prettyfaces).
EDIT
Dường như Prettyfaces không hoạt động trong trường hợp này. Xin lỗi vì đã lãng phí thời gian của bạn.
Bây giờ tôi sẽ đề xuất một giải pháp khả thi khác, vì câu trả lời của BalusC đã bị xóa.
1) Bạn có thể tạo một bean được quản lý mới của phạm vi phiên, chúng ta hãy gọi nó là: PageManagedBean:

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

2) Tạo một trang bố trí tổng thể (Facelets khuôn mẫu):

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

Bây giờ khi bạn muốn để thay đổi trang, bạn chỉ cần thay đổi giá trị PageManagedBean.includedPage.

+0

tôi gặp lỗi này khi sử dụng giải pháp Lỗi xảy ra trong quá trình triển khai: Ngoại lệ trong khi tải ứng dụng: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang. IllegalArgumentException: java.lang.ClassNotFoundException: com.ocpsoft.pretty.faces.config.PrettyConfigListener. Vui lòng xem server.log để biết thêm chi tiết. C: \ Users \ hp \ Documents \ NetBeansProjects \ PlanificationDrapage \ nbproject \ build-impl.xml: 294: Mô-đun chưa được triển khai. – marouanoviche

+0

xin vui lòng xem câu trả lời của tôi trong câu hỏi của bạn về lỗi này –

+0

cảm ơn bạn trả lời tốt đẹp câu trả lời của bạn giải quyết vấn đề của tôi. – marouanoviche

2

Thử sử dụng prettyFaces.

PrettyFaces là một mã nguồn mở thư viện URL viết lại với tăng cường hỗ trợ cho JavaServer Faces - JSF 1.1, 1.2 và 2.0 - cho phép tạo ra các , URL khá bookmark-thể.

Xem thêm điều này UrlRewriteFilter with Glassfish một vài cách khác về cách thực hiện việc này.

  1. Mặt trận dụ GlassFish của bạn với Apache và sử dụng mod_rewrite
  2. Sử dụng Tuckey's Url Rewrite Filter
+0

tôi tìm thấy chỉ cần giải pháp cần maven nhưng tôi không sử dụng maven .. bạn có một hướng dẫn để sử dụng nó với maven ra ?? – marouanoviche

+0

chúng tôi không thể thêm một cái gì đó trong web.xml và ẩn url ?? – marouanoviche

+1

tiếc là không :) – MaVRoSCy