2012-05-01 13 views
9

मुझे अपने AJAX अनुरोध में सर्वर पर पैरामीटर पास करने की आवश्यकता है। कृपया नीचे दिया गया कोड देखें। स्कोप: देखें स्कोपएफ में पैरामीटर कैसे पास करें: एच में AJAX: inputText? f: param काम नहीं करता

च के बिना: परम

<p:column width="40"> 
    <h:inputText id="originalCostInputTxt" value="#{articlePromo.costoBruto}" 
     <f:ajax event="change" 
      execute="@this" 
      listener="#{promotionDetailManagedBean.onCostoBrutoChange}"> 
     </f:ajax> 
    </h:inputText> 
</p:column> 

प्रबंधित बीन

public final void onCostoBrutoChange(final AjaxBehaviorEvent event) { 
    createCostoBrutoOptions(promoArticlesList); 
} 

इस मामले में, विधि onCostoBrutoChange() लागू हो जाता है है। लेकिन, जब मैं f: param शामिल करता हूं तो यह लागू नहीं होता है। कृपया नीचे दिया गया कोड देखें।

च के साथ : param

<p:column width="40"> 
    <h:inputText id="originalCostInputTxt" value="#{articlePromo.costoBruto}" 
     <f:ajax event="change" 
      execute="@this" 
      listener="#{promotionDetailManagedBean.onCostoBrutoChange}"> 
     <f:param value="#{articlePromo.promocionArticuloId}" name="myId"/> 
     </f:ajax> 
    </h:inputText> 
</p:column> 

प्रबंधित बीन

public final void onCostoBrutoChange(final AjaxBehaviorEvent event) { 
    createCostoBrutoOptions(promoArticlesList); 
    String id = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("myId"); 
} 

इस कोड में क्या गलत पहचान करने में सक्षम नहीं है। कृपया गाइड करें।

धन्यवाद, शिखा

उत्तर

27

लिंक और केवल, आदानों में नहीं बटन में <f:param> काम करता है।

<h:inputText ...> 
    <f:ajax listener="#{bean.listener(item)}" /> 
</h:inputText> 

:

<h:inputText ...> 
    <f:ajax listener="#{bean.listener(item.id)}" /> 
</h:inputText> 

public void listener(Long id) { 
    // ... 
} 

आप, साथ ही पूरे मद पारित कर सकते हैं:

अपने वातावरण ईएल 2.2 का समर्थन करता है, तो बस यह बजाय विधि तर्क के रूप में पारित

public void listener(Item item) { 
    // ... 
} 

यदि आपका पर्यावरण ईएल 2.2 का समर्थन नहीं करता या नहीं कर सकता है, तो इसके बजाय ईएल प्रोग्रामेटिक रूप से मूल्यांकन करें।

public void listener() { 
    FacesContext context = FacesContext.getCurrentInstance(); 
    Long id = context.getApplication().evaluateExpressionGet(context, "#{item.id}", Long.class); 
    // ... 
} 
+0

इस तरह से अवगत नहीं था ... अच्छा !!! – Daniel

+3

भगवान से जवाब .. :) धन्यवाद। इसने काम कर दिया। इसके बारे में पता नहीं था। –

+0

@ बालससी मैं पुनरावृत्ति चर 'var' का उपयोग करके' सी: foreach' के अंदर प्रोग्रामिंग रूप से ईएल का मूल्यांकन कर रहा हूं, लेकिन यह 'शून्य' का मूल्यांकन करता है। – Theo

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