2011-04-02 11 views
26

से प्रबंधन विधि निष्पादित करें मैं जावास्क्रिप्ट से <h:dataTable> अद्यतन करता हूं जो एक AJAX अनुरोध कैसे कर सकता हूं? मैं वर्तमान में @Postconstruct का उपयोग कर प्रारंभिक डेटा लोड कर रहा हूं लेकिन यह प्रारंभिक पृष्ठ लोड में काफी देरी कर रहा है।जावास्क्रिप्ट ऑनलोड ईवेंट

मैं onload<body> एचटीएमएल टैग का उपयोग अनुरोध को आग लगाने और डेटाटेबल को अपडेट करने के बारे में सोच रहा हूं।

उत्तर

52

सिद्धांत में निम्नलिखित करना चाहिए।

<h:body> 
    <f:ajax event="load" listener="#{bean.onload}" /> 
</h:body> 

public void onload(AjaxBehaviourEvent event) { 
    // ... 
} 

हालांकि साथ

, इस किसी कारण से समर्थित नहीं है। मैंने कभी इसके बारे में issue report पोस्ट किया है।

निम्नलिखित कार्य करता है, लेकिन यह संक्षेप में एक हैक है।

<h:head> 
    <title>JSF 2.0 onload hack</title> 
    <script> 
     window.onload = function() { 
      document.getElementById('hidden:link').onclick(); 
     } 
    </script> 
</h:head> 
<h:body> 
    <h:form id="hidden" style="display:none"> 
     <h:commandLink id="link"> 
      <f:ajax event="click" listener="#{bean.onload}" /> 
     </h:commandLink> 
    </h:form> 
</h:body> 

आप PrimeFaces उपयोग करने के लिए होता है, तो आप autoRun set to true के साथ अपने <p:remoteCommand> उपयोग कर सकते हैं।

<h:body> 
    <h:form> 
     <p:remoteCommand name="onload" action="#{bean.onload}" autoRun="true" /> 
    </h:form> 
</h:body> 

या यदि आप OmniFaces का उपयोग कर रहे हैं, तो आप उपयोग कर सकते हैं अपने <o:commandScript>

<h:body> 
    <h:form> 
     <o:commandScript name="onload" action="#{bean.onload}" /> 
     <h:outputScript target="body">onload()</h:outputScript> 
    </h:form> 
</h:body> 

<h:outputScript target="body"><body> के अंत में <script> बना देता है। आगामी OmniFaces 2.2 इस आवश्यकता को new autorun attribute से हटा देगा।

<h:body> 
    <h:form> 
     <o:commandScript name="onload" action="#{bean.onload}" autorun="true" /> 
    </h:form> 
</h:body> 
+0

सिद्धांत यह काम करना चाहिए। आकर्षण –

+0

की तरह छिपा बटन काम नहीं करता है work.But primefaces बात भी पुनः निर्देशित – ACV

+0

@BalusC मैं इस मुद्दे रिपोर्ट हाइपरलिंक नहीं खोल सकता (पृष्ठ आप कार्रवाई विधि से चाहते हैं वापसी) के लिए, चाल किया था। क्या यह मुद्दा अभी तक हल हो गया है? – Metalhead

1
jsf2.0 में

आप च का उपयोग कर सकते हैं: लगभग किसी भी अन्य JSF टैग जैसे

<h:selectOneRadio id="myComponent" value="#{someBean.inputMethod}"> 
<f:selectItem itemValue="#{someBean.A}" itemLabel="A" /> 
<f:selectItem itemValue="#{someBean.B}" itemLabel="B" /> 
     <f:ajax event="click" action=#{someBean.someMethod} /> 
</h:selectOneRadio> 

में ajax टैग इस उदाहरण someMethod "myComponent" के लिए जावास्क्रिप्ट onClick ईवेंट में excuted है में selectOneRadio

यह सुनिश्चित नहीं है कि आप इसके बाद क्या हैं ....

+0

धन्यवाद उस के लिए, मैं अनुरोध पृष्ठ लोड के बाद स्वत: किए जाने के लिए चाहते हैं –

+0

Mayby PreRenderViewEvent अपने problem' <च: दृश्य .......> के लिए काम कर सकते हैं <च: घटना type = "preRenderView" श्रोता = "# {someBean.download}" /> ' – ChristiaanP

+0

लेकिन यह नहीं अतुल्यकालिक – Metalhead

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