2009-09-02 11 views
11

मैं वर्तमान में कुछ सर्वर-साइड विधियों (समूह के रूप में) के साथ कुछ फ्रंट-एंड मानों को सत्यापित करने का प्रयास कर रहा हूं और परिणाम से निपटने वाले मुद्दों में भाग ले रहा हूं।a4j में डेटा फ़ील्ड को सही तरीके से कैसे एक्सेस करें: jsFunction परिणाम

यहाँ बटन के लिए एक्सएचटीएमएल यह शुरू होता है कि सभी है:

<h:commandButton action="#{Bean.save()}" 
     value="Save" 
      id="save" 
     onclick="checkForConfirmation();" /> 

और जावास्क्रिप्ट, जिसका एक भाग बटन कॉल, अन्य भाग जिनमें से jsFunction कॉल

function checkForConfirmation() 
{ 
     var name = document.getElementById("path:to:name").value; 
     var address = document.getElementById("path:to:address").value; 
     var city = document.getElementById("path:to:city").value; 
     var state = document.getElementById("path:to:state").value; 
     var zip = document.getElementById("path:to:zip").value; 

     jsFunc1(name, address, city, state, zip); 
} 
function showConfirmPrompt() 
{ 
      if(confirm('Confirmation before save')) 
      { 
       return true; 
      } 

      return false; 
} 

और अंत में, jsFunction जो समस्याग्रस्त टुकड़ा है:

<a4j:form> 
     <a4j:jsFunction name="jsFunc1" action="#{Bean.shouldBeConfirmed()}" data="#{Bean.booleanResult}" oncomplete="alert(data); if (data) {showConfirmPrompt();}"> 
      <a4j:actionparam name="param1" assignTo="#{Bean.nameToBeValidated}"/> 
      <a4j:actionparam name="param2" assignTo="#{Bean.addressToBeValidated}"/> 
      <a4j:actionparam name="param3" assignTo="#{Bean.cityToBeValidated}"/> 
      <a4j:actionparam name="param4" assignTo="#{Bean.stateToBeValidated}"/> 
      <a4j:actionparam name="param5" assignTo="#{Bean.zipToBeValidated}"/> 
     </a4j:jsFunction> 
    </a4j:form> 
समस्या

कि, करने के लिए है घटनाओं की इस श्रृंखला के अंत में वार्ड, 'अपूर्ण' विशेषता में अलर्ट (डेटा) से पता चलता है कि डेटा अपरिभाषित है। चेतावनी संवाद दिखाने के लिए या नहीं, यह जानने के लिए मुझे परिभाषित करने की आवश्यकता है।

मैं पुष्टि कर सकता हूं कि बीन.शॉल्डबी कॉन्फिगर() विधि वास्तव में चल रही है, और सही पैरामीटर के साथ, और वास्तव में सही मान लौट रही है, और यहां तक ​​कि Bean.booleanResult चर के मान को सेट करना (जो एक सामान्य जावा बूलियन है)। मुझसे यहां क्या गलत हो रहा है?

उत्तर

12

हालांकि यह एक बहुत पुराना सवाल है, मेरे पास Richfaces 4 M3 के साथ एक ही समस्या थी। Yev द्वारा सुझाए गए Parameteres काम नहीं किया था। इसलिए richfaces के JIRA को संदर्भित किया गया। जो के अनुसार, यह एक बग है (जो "ठीक नहीं होगा" मोड में है, पता नहीं क्यों!) तो अब के लिए वैकल्पिक हल event.data बजाय dataoncomplete हैंडलर में उपयोग करने के लिए है। मैंने परीक्षण किया और यह काम करता है :)

+0

यह अब तक का सबसे लोकप्रिय सवाल है। मुझे लगता है कि बहुत से लोगों को यह समस्या है। एक कामकाज खोजने के लिए चीयर्स, और इसे साझा करने के लिए धन्यवाद! – Ben

+0

आपका स्वागत है :) वास्तव में यह एक बहुत ही आम मुद्दा है! मुझे आश्चर्य है कि क्यों JBoss समुदाय इस तरह गॉथचास को एक स्थान पर दस्तावेज नहीं करता है। – Nikhil

+2

क्यों इसे अपने माइग्रेशन गाइड में शामिल नहीं किया गया है? इससे मुझे बहुत मदद मिली, धन्यवाद। 4.1 – Toskan

2

मेरे पास यह आपके सेटअप के समान है और यह मेरे लिए काम करता है। फर्क सिर्फ इतना है, है मैं jsFunction पर अतिरिक्त गुण:

<a4j:form> 
    <a4j:jsFunction name="jsFunc1" 
     action="#{Bean.shouldBeConfirmed()}" 
     data="#{Bean.booleanResult}" 
     oncomplete="alert(data);" 
     ignoreDupResponses="true" 
     eventQueue="foo"> 
     ... 

अपने डेटा और (अपने booleanResult) एक पूर्णांक है। ठीक काम करता है।

1

मेरे पास भी एक ही समस्या का सामना .. बूलियन परिणाम के मामले में हम बजाय पूर्ण विधि नाम लिखने के लिए की तरह अपने मामले में यह # {Bean.isBooleanResult} होना चाहिए गेटर ... को दूर करने की जरूरत है .... अगर मुझे चेहरे की समस्या है तो मुझे बताएं ...