2013-06-21 3 views
5

मेरे पास एक जेएसएफ एप्लीकेशन है और मैं यूआरएल को छिपाना चाहता हूं और पृष्ठों के बीच स्विच करते समय यूआरएल में एप्लिकेशन का नाम रखना चाहता हूं।एप्लिकेशन नाम के बाद जेएसएफ यूआरएल कैसे छिपाएं?

यूआरएल है कि मैं 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

मैं ग्लासफ़िश – marouanoviche

उत्तर

2

रूप MaVRoSCy कहा कि तुम अपने URL पुनः लिखने के लिए Prettyfaces उपयोग कर सकते हैं। उनके दस्तावेज़ बहुत उपयोगी और बहुत स्पष्ट हैं। यहां अनुसरण करने के लिए कदम हैं (मेवेन निर्भरता दृष्टिकोण के बिना):
1) अपने जेएसएफ संस्करण के आधार पर नवीनतम जार डाउनलोड करें और इसे अपने प्रोजेक्ट क्लासपाथ में रखें। , pretty-config.xml कि आपके prettyfaces मैपिंग परिभाषित करेगा इस तरह: 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 के लिए निम्न
2) जोड़े) WEB-INF के तहत एक फ़ाइल बनाएँ जब में outcome को परिभाषित करने

<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) अब आप अपने प्रबंधित सेम, आपको pretty:idOfURLMapping वापस करना चाहिए। उदाहरण के लिए: pretty:accueil ऊपर दिए गए पहले परिभाषित पृष्ठ पर रीडायरेक्ट करेगा और सामान्यतः यह URL के रूप में http://localhost:8080/PlanificationDrapageWeb/ प्रदर्शित करेगा।
अंत में, ध्यान दें कि आपको इसका उपयोग केवल तभी करना चाहिए जब यह कार्यात्मक आवश्यकता हो। अन्यथा मैं विस्तार के बिना यूआरएल का उपयोग करता हूं क्योंकि बलुस ने उल्लेख किया है (उसकी विधि या यदि आप उन्नत प्रीटीफेस कार्यक्षमताओं को चाहते हैं)।
EDIT
ऐसा लगता है कि Prettyfaces इस स्थिति के लिए काम नहीं करता है। आपके समय बर्बाद करने के लिए खेद है।
अब मैं एक और संभावित समाधान सुझाऊंगा, क्योंकि बलुस का जवाब हटा दिया गया था।
1) आप सत्र दायरे का एक नया कामयाब सेम बनाने के लिए, यह कॉल: PageManagedBean:

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

2) एक मास्टर लेआउट पृष्ठ बनाएँ (Facelets templating):

<!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 देखें। सी: \ उपयोगकर्ता \ एचपी \ दस्तावेज़ \ NetBeansProjects \ PlanificationDrapage \ nbproject \ build-impl.xml: 294: मॉड्यूल तैनात नहीं किया गया है। – marouanoviche

+0

कृपया इस त्रुटि के बारे में अपने प्रश्न में मेरा उत्तर देखें –

+0

धन्यवाद आपके उत्तर का उत्तर मेरी समस्या का समाधान करें। – marouanoviche

2

prettyFaces का उपयोग करने का प्रयास करें।

PrettyFaces जावा सर्वर के लिए बढ़ाया समर्थन के साथ एक OpenSource यूआरएल-पुनर्लेखन पुस्तकालय चेहरे है - JSF 1.1, 1.2 और 2.0 - बुकमार्क-योग्य, सुंदर यूआरएल की निर्माण के साथ सक्रिय।

यह UrlRewriteFilter with Glassfish यह भी करने के तरीके पर कुछ और तरीके देखें। और अपाचे के साथ

  1. मोर्चा अपने ग्लासफिश उदाहरण उपयोग mod_rewrite
  2. उपयोग Tuckey's Url Rewrite Filter
+0

का उपयोग कर रहा हूं, मुझे बस समाधान की जरूरत है मैवेन की जरूरत है, लेकिन मैं maven का उपयोग नहीं कर रहा हूं .. क्या आपके पास इसे मैवेन के साथ उपयोग करने के लिए एक ट्यूटोरियल है ?? – marouanoviche

+0

हम सिर्फ web.xml में कुछ जोड़ नहीं सकते हैं और यूआरएल छुपा सकते हैं ?? – marouanoviche

+1

दुर्भाग्य से नहीं :) – MaVRoSCy

संबंधित मुद्दे