दिलचस्प पोस्ट
माइक्रोसॉफ्ट एक्सेल ActiveX नियंत्रण अक्षम है? System.Drawing.Bitmap को प्रदर्शित करने के लिए WPF में छवि नियंत्रण का उपयोग करना सी # में किसी फ़ंक्शन से मैं कई मान कैसे वापस कर सकता हूं? SQL रिक्त है और = नल जावा सरणी क्रमबद्ध अवरोही? एच एच: एमएम: एसएस प्रारूप में केवल समय के लिए समय कन्वर्ट? टी-एसक्यूएल में एक प्रतिशत के हस्ताक्षर से मैं कैसे बच सकता हूं? पायथन 2.7 में सबप्रोसेक्शन के आउटपुट को छिपाने के तरीके इंस्टॉल किए गए एंड्रॉइड पैकेज नाम के आधार पर आशय चयनकर्ता का कस्टम फ़िल्टरिंग मेमोरी लीक स्ट्रीमरिडर और एक्सएमएल सर्यरिलाइज़र का उपयोग कर PHP में – (डबल बृहदान्त्र) और -> (तीर) के बीच अंतर क्या है? गतिशील रूप से अंगुलर 2 में ईवेंट श्रोता जोड़ें XSLT XML स्रोत के साथ जिसमें xmlns पर सेट एक डिफ़ॉल्ट नेमस्पेस है JSON और ऑब्जेक्ट लिटल नॉटशन के बीच अंतर क्या है? टेक्सटेरा में चयनित पाठ कैसे प्राप्त करें?

पास पैरामीटर पी: जावास्क्रिप्ट से दूरसंचार

मैं जावास्क्रिप्ट से remoteCommand मूल्य देना चाहता हूं। यदि यह संभव है, तो मैं यह कैसे कर सकता हूं और बैकिंग सेम में उन्हें कैसे प्राप्त कर सकता हूं?

वेब के समाधान से एकत्रित समाधान "पास पैरामीटर पी: जावास्क्रिप्ट से दूरसंचार"

 remoteCommandFunctionName({name1:'value1', name2:'value2'}); 

हाँ यह संभव है। ऐसा कैसे करें कि प्राइमफैसेस संस्करण पर निर्भर करता है। आप इसे PrimeFaces के उपयोगकर्ता मार्गदर्शिका में देख सकते हैं। प्राइमफैसेस संस्करण 3.3 से पहले सिंटैक्स इस प्रकार है (3.2 उपयोगकर्ता गाइड से कॉपी किया गया):

3.80 रिमोट कॉमांड

पासिंग पैरामीटर

रिमोट कमांड गतिशील मापदंडों को निम्नलिखित तरीके से भेज सकता है;

increment({param1:'val1', param2:'val2'});

यह सामान्य रूप से बैकिंग बीन में उपलब्ध है उदाहरण के लिए एक अनुरोध scoped बीन:

 @ManagedProperty("#{param.param1}") private String param1; @ManagedProperty("#{param.param2}") private String param2; 

या व्यापक स्कॉड बीन की विधि में:

 Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); String param1 = params.get("param1"); String param2 = params.get("param2"); 

हालांकि इस दृष्टिकोण का नुकसान यह है कि आप एक से अधिक पैरामीटर को सामान्य HTML रूपों और HTTP अनुरोध पैरामीटर (जो वास्तविक दुनिया में उपयोग किया जाता है जैसे कई चुनिंदा ड्रॉपडाउन सूची और एकाधिक चयन चेकबॉक्स ग्रुप) के साथ संभव है, जैसे कई पैरामीटर निर्दिष्ट नहीं कर सकते हैं।


प्राइमफैसेस संस्करण 3.3 से वाक्यविन्यास निम्नानुसार है (3.3 उपयोगकर्ता गाइड से कॉपी किया गया):

3.81 रिमोट कॉमांड

पासिंग पैरामीटर

रिमोट कमांड गतिशील मापदंडों को निम्नलिखित तरीके से भेज सकता है;

increment([{name:'x', value:10}, {name:'y', value:20}]);

इस तरह एक पैरामीटर नाम पर कई मान निर्दिष्ट करने की संभावना प्रदान करता है। ऊपर की तरह एकल मानों वाले पैरामीटर पुराने तरीके से उपलब्ध हैं:

 @ManagedProperty("#{param.x}") private int x; @ManagedProperty("#{param.y}") private int y; 

(नोट: आप Mojarra में Integer का उपयोग कर सकते हैं, लेकिन <p:remoteCommand> में नहीं, यह <p:remoteCommand> से पूरी तरह से असंबंधित है)

या व्यापक स्कॉड बीन की विधि में:

 Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); int x = Integer.valueOf(params.get("x")); int y = Integer.valueOf(params.get("y")); 

यदि आपको कई मानों वाला पैरामीटर निर्दिष्ट करने की आवश्यकता है, तो आप निम्नानुसार ऐसा कर सकते हैं:

 functionName([{name:'foo', value:'one'}, {name:'foo', value:'two'}, {name:'foo', value:'three'}]);` 

अनुरोध में स्कॉन्ड सेम के साथ:

 @ManagedProperty("#{paramValues.foo}") private String[] foos; 

या व्यापक स्कॉड बीन की विधि में:

 Map<String, String[]> paramValues = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterValuesMap(); String[] foos = paramValues.get("foo"); 

पृष्ठ:

 <p:remoteCommand name="command" action="#{bean.method}" /> 

जावास्क्रिप्ट:

 command({param: 'value'}); 

सेम:

 public void method() { String value = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("param"); } 

जब आप जावास्क्रिप्ट से एक से अधिक पैरामीटर पास करना चाहते हैं, तो वाक्यविन्यास है:


var param1 = ...;
var param2 = ...;
var param3 = ...;

remoteCommandFunction ([{name: 'param1', मान: param1 }, {name: 'param2', मान: param2 }, {name: 'param3', मान: param3 }]);

एक कार्यात्मक उदाहरण के लिए Joel's post @BalusC को गठजोड़ करें

 <h:form> <p:remoteCommand name="rcName" update="msgs" actionListener="#{remoteCommandView.beanMethod}" /> <p:growl id="msgs" showDetail="true" /> <p:commandButton type="button" onclick="rcName([{name:'model', value:'Buick Encore'}, {name:'year', value:2015}]);" value="Pass Parameters 1" /><br/> <p:commandButton type="button" onclick="clicked();" value="Pass Parameters 2" /> </h:form> <script type="text/javascript"> //<![CDATA[ function clicked(){ rcName([{name:'model', value: 'Chevy Volt'}, {name:'year', value:2016}]); } //]]> </script> @ManagedBean public class RemoteCommandView { public void beanMethod() { // OR - retrieve values inside beanMethod String model1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("model"); String year1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("year"); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Executed", "Using RemoteCommand with parameters model := " + model + ", year := " + year)); } @ManagedProperty("#{param.model}") private String model; @ManagedProperty("#{param.year}") private int year; public void setModel(String model) { this.model = model; // value set by JSF } public void setYear(int year) { this.year = year; } } 

यदि आप अपना फ़ंक्शन कॉल करना चाहते हैं, उदाहरण के लिए एक पुष्टि संवाद, आपका कस्टम फ़ंक्शन पासिंग पैरामीटर शैली के अनुरूप होना चाहिए। उदाहरण के लिए:

  <p:commandLink id="myId" onclick="confirmDelete([{name:'Id', value: '#{my.id}'}]);" immediate="true"> 

जावा स्क्रिप्ट फ़ंक्शन

  function confirmDelete(id) { if (confirm('Do you really want to delete?')) { remoteDeleteDemand(id); return true; } 

दूरस्थ कॉमांड टैग

 <p:remoteCommand name="remoteDeleteDemand" actionListener="#{myController.doDelete}" /> 

प्राइमफैस 5.0, गतिशील सरणी (सभी तालिका स्तंभ चौड़ाई इस पद्धति द्वारा भेजी जाएगी)

किरण

 public void updateTableColumnsWidth() { FacesContext context = FacesContext.getCurrentInstance(); Map<String, String> map = context.getExternalContext().getRequestParameterMap(); } 

p: remoteCommand

 <h:form> <p:remoteCommand name="remoteCommand" action="#{controller.updateTableColumnsWidth}" /> </h:form> 

जे एस

 <script type="text/javascript"> function updateTableColumnsWidth () { var columnsCount = document.getElementById('table').rows[0].cells.length; var json = []; for (var i = 0; i &lt; columnsCount; i++) { json[i] = { name: i, value: document.getElementById('table').rows[0].cells[i].offsetWidth}; } console.log(json); remoteCommand(json); }; </script>