2011-02-04 18 views
7

मैं जेएसएफ 2 और ग्लासफ़िश, प्राइमफेस 2.1 का उपयोग कर रहा हूं।जेएसएफ प्राइमफेस पी: कमांडलिंक नए पेज पर रीडायरेक्ट नहीं होगा?

यह काम करता है, showCreateProfile() विधि मारा जाता है, और विधि रिटर्न "profileForm" और ब्राउज़र कि पृष्ठ पर रीडायरेक्ट:

<h:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" /> 

बहरहाल, यह काम नहीं करता है, showCreateProfile() विधि हिट मिल , और विधि "प्रोफाइलफॉर्म" लौटाती है लेकिन ब्राउज़र पृष्ठ पर रीडायरेक्ट नहीं करता है। मैंने बिना किसी किस्मत के तीन अलग-अलग चीजों की कोशिश की:

<p:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" /> 

<p:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" ajax="false" /> 

<p:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" ajax="false" immediate="true"/> 

कोई विचार क्या मैं गलत कर रहा हूं?

रोब

उत्तर

13

Primefaces 'p:commandLink आग डिफ़ॉल्ट रूप से एक ajax अनुरोध। यह पूरी HTTP प्रतिक्रिया नहीं देता है, लेकिन केवल आंशिक HTTP प्रतिक्रिया जिसे जेएस द्वारा HTML DOM पेड़ में अपडेट किया जाना है।

  1. ajax="false" विशेषता के आधार पर अक्षम ajax:

    आप मूल रूप से दो विकल्प हैं। फिर यह एक सामान्य HTTP अनुरोध आग लग जाएगा।

  2. update="clientid" विशेषता द्वारा आंशिक सामग्री (उसी पृष्ठ पर!) अपडेट (पुनः प्रस्तुत करें)। आप सामग्री के प्रतिपादन को नियंत्रित करने के लिए rendered विशेषता का उपयोग कर सकते हैं।

यदि न तो काम करता है, तो समस्या कहीं और स्थित है। चूंकि h:commandLink काम करता है और p:commandLink की क्रिया विधि निष्पादित भी होती है, तो इसका मतलब यह हो सकता है कि आप ajax="false" को आजमाने के दौरान चल रहे कोड को नहीं चला रहे हैं। सत्यापित करें, सहेजें, पुनर्निर्माण करें, पुन: नियोजित करें, पुनरारंभ करें।

4

प्राइमफ़ेस आगे आधारित नेविगेशन का समर्थन नहीं करता है, तो अगर आप AJAX अनुरोध के भीतर नेविगेट करना चाहते हैं या AJAX को झूठी पर सेट करना चाहते हैं तो आपको रीडायरेक्ट का उपयोग करने की आवश्यकता है क्योंकि बलुस ने कहा।

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