2015-06-03 3 views
6

मैं नीचे उत्पादन लिंक जो अपने काम करता है का उपयोग कर नई विंडो में एक मनमाना URL खोलने के लिए:कैसे एक PrimeFaces बटन

<h:outputLink value="#{verDocumentoController.url()}" target="_blank"> 
    show document 
</h:outputLink> 

यह एक यूआरएल एक नई विंडो में एक सेम संपत्ति के रूप में प्राप्त खोलता है।

हालांकि, मैं प्राइमफेस लुक'फेल में एक बटन में लिंक को चालू करना चाहता हूं। मैं नीचे के रूप में करने की कोशिश की:

<p:commandButton value="show document" action="#{verDocumentoController.url()}" 
    onclick="form.target='_blank'" ajax="false" /> 

लेकिन यह केवल एक नई विंडो में वर्तमान पृष्ठ पुन: खोलता है और न यूआरएल सेम संपत्ति के रूप में निर्दिष्ट। वैसे भी मैं इसे कैसे प्राप्त कर सकता हूं?

उत्तर

10

<p:commandButton> मूल रूप से यूआरएल को एक POST अनुरोध प्रस्तुत करता है जैसा कि उसके मूल <h:form> द्वारा निर्दिष्ट किया गया है, जो वास्तव में वर्तमान अनुरोध URL (आपको पता है, "पोस्टबैक") के लिए डिफ़ॉल्ट रूप से डिफ़ॉल्ट रूप से डिफ़ॉल्ट है। action विशेषता मूल रूप से एक बीन विधि का आह्वान करती है और नेविगेशन केस परिणाम के रूप में लौटाए गए मान का उपयोग करती है। एक यूआरएल अनिवार्य रूप से एक समझदार नेविगेशन केस परिणाम का प्रतिनिधित्व नहीं करता है।

बस window.open() का उपयोग सरल <p:button> पर करें।

<p:button value="show document" 
    onclick="window.open('#{verDocumentoController.url()}');return false;" /> 

तुम भी एक <p:commandButton> पर ऐसा कर सकते हैं, लेकिन वह अनावश्यक रूप से overcomplicated है।

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