2012-02-05 12 views
11

रीडायरेक्ट के बाद उपलब्ध नहीं है। मुझे जेएसएफ 2 में फ़्लैश स्कोप के उपयोग के साथ गलतफहमी है। मैं अपनी क्रिया के दौरान फ्लैश मैप में ऑब्जेक्ट रखना चाहता हूं और इस ऑब्जेक्ट को अगले पृष्ठ में दिखाना चाहता हूं।फ्लैश स्कोप में ऑब्जेक्ट

public String showDetail(PersonneDTO personne) { 
    MessageFlashBean message = new MessageFlashBean(); 
    message.addMessage("test"); 
    FacesContext.getCurrentInstance().getExternalContext().getFlash() 
     .put("test", message); 
    return "showDetail"; 
} 

यह सिर्फ एक परीक्षण है, लेकिन वास्तविक वस्तु मैं उपयोग करना चाहते हैं और अधिक जटिल है: यहाँ मेरी कार्रवाई (: commandLink ज से कहते हैं) है।

<ui:fragment rendered="#{flash.test != null and flash.test.hasMessage()}" > 
    <ui:repeat var="message" value="#{flash.test.messages}"> 
     #{message} 
    </ui:repeat> 
</ui:fragment> 

यहाँ नेविगेशन है (और यहाँ मेरी समस्या है :)):

<navigation-rule> 
    <from-view-id>/index.xhtml</from-view-id> 
    <navigation-case> 
     <from-outcome>showDetail</from-outcome> 
     <to-view-id>/private/showDetail.xhtml</to-view-id> 
    </navigation-case> 
</navigation-rule> 

इस मामले में, फ्लैश गुंजाइश काम करता है

यहाँ दूसरी फ्लैश उपयोग के साथ पेज है ठीक है और मेरा संदेश प्रकट होता है।

लेकिन यदि मैं नेविगेशन मामले में रीडायरेक्ट जोड़ता हूं, तो फ्लैश मैप में मेरा ऑब्जेक्ट गायब हो गया है।

मुझे समझ में नहीं आता कि मैं नेविगेशन नियम में रीडायरेक्ट का उपयोग क्यों नहीं कर सकता (मुझे विश्वास था कि यह फ़्लैश स्कोप का लक्ष्य था)।

मेरे कोड में कुछ गलत हो सकता है।

कोई मेरी मदद कर सकता है?

धन्यवाद

+0

मैं JSF 2.0.3.FCS पर की कोशिश की है, यह एक रीडायरेक्ट जीवित रहने की थी। – Ravi

उत्तर

14

JSF2 फ्लैश गुंजाइश had a lot of problems की Mojarra के कार्यान्वयन। उनमें से ज्यादातर को हर नई मोज़रा रिलीज के साथ हल किया गया था। वर्तमान में, नवीनतम Mojarra version के साथ, 2.1.6, जहां तक ​​मुझे अभी भी एक बड़ी खुली समस्या है, यह तब भी काम नहीं करेगा जब आप किसी भिन्न आधार पथ पर रीडायरेक्ट करते हैं। issue 1751 में लंबी चर्चा में (वर्तमान में) अंतिम टिप्पणी भी देखें।

अभी, आप मूल रूप से निम्न विकल्प हैं:

  1. फ्लैश का उपयोग करते समय आप एक अलग आधार पथ पर रीडायरेक्ट करना होगा भूल जाओ। इसके बजाय एक अनुरोध पैरामीटर का उपयोग करें या कस्टम कुकी के साथ फ्लैश स्कोप अनुकरण करने का प्रयास करें।

  2. यदि संभव हो, तो फ़ोल्डर संरचना को पुनर्गठित करें ताकि आपको जीवित रहने के लिए फ़्लैश स्कोप की आवश्यकता होने पर आपको किसी भिन्न बेस पथ पर रीडायरेक्ट करने की आवश्यकता न हो।

  3. मोजाररा के बजाय MyFaces आज़माएं। शायद यह फ्लैश स्कोप के संबंध में बेहतर है।


अद्यतन: प्रति issue 2136 के रूप में, के फ्लैश गुंजाइश एक अलग रास्ता पर एक रीडायरेक्ट के बाद उपलब्ध होने नहीं खोले गए अंतिम समस्या शीघ्र ही आगामी Mojarra 2.1.14 में हल किया जाता है। तो इस संस्करण के साथ, सभी फ्लैश स्कोप से संबंधित समस्याओं की खोज और अब तक खुला हल और बंद होना चाहिए।

+0

धन्यवाद एक बहुत है, मैं Mojarra 2.1.6 का उपयोग करें और मैं इस बग नहीं देखा था। यह बिल्कुल मेरे मामले है। मैं वापस 2.0.3 संस्करण – Kiva

2

जेएसएफ 2.1 नेटबींस के साथ फ्लैश के साथ यह समस्या है। /somepage?redirect-faces=true or /somedirectory/somepage?faces-redirect=true का उपयोग कर काम नहीं करता है। यह somepage?redirect-faces=true होना चाहिए।

mojarra 2.1.7 परीक्षण किया है, लेकिन यह ऊपर समस्या नहीं थी।

+2

मुझे लगता है कि यहाँ आईडीई कोई फर्क नहीं पड़ता के लिए जाने की कोशिश करता हूँ ... –