2012-11-04 14 views
15

मैं उपयोगकर्ता द्वारा रेडियो बटन पर क्लिक करने पर सत्यापन संदेश प्रदर्शित करने का प्रयास कर रहा हूं।प्राइमफेस selectOneRadio AJAX

यह केवल काम करता है जब मैं रेडियो बटन पर क्लिक करें जब मैं प्रस्तुत बटन पर क्लिक करें, लेकिन नहीं:

<h:form id="form"> 
     <p:panel id="panel"> 
      <ui:repeat value="#{questionsBean}" var="question"> 
       <h:panelGrid columns="3" style="margin-bottom:10px" cellpadding="5"> 
        <h:outputText value="#{question.questionText}" /> 
        <p:selectOneRadio id="question" value="#{question.response}" 
         validator="#{question.validate}" required="true"> 
         <f:selectItem itemLabel="Yes" itemValue="Yes" /> 
         <f:selectItem itemLabel="No" itemValue="No" /> 
         <p:ajax update="msgQuestion" event="change"/> 
        </p:selectOneRadio> 
        <p:message for="question" id="msgQuestion" /> 
       </h:panelGrid> 
      </ui:repeat> 
      <p:commandButton id="btn" value="Save" update="panel" partialSubmit="true"/> 
     </p:panel> 
    </h:form> 
+0

यह यूई से संबंधित प्रतीत होता है: दोहराना ... UI के बिना ठीक काम करता है: एक प्रश्न पर दोहराएं। –

+0

कृपया इसे देखें: - http://stackoverflow.com/questions/14551145/selectoneradio-inside-subtable-ajax-call-not-working?rq=1 –

उत्तर

30

एचटीएमएल डोम change घटना गलत घटना है जब आप कि क्या रेडियो पर सुनना चाहते हैं बटन (या चेकबॉक्स) क्लिक किया गया है। इसके लिए आपको click ईवेंट का उपयोग करना चाहिए।

रेडियो बटन (और चेकबॉक्स) का मूल्य मूल रूप से कभी नहीं बदलता है। यह हमेशा एक ही मूल्य है। सवाल यह है कि क्या यह मान सर्वर के पक्ष में भेजा जाएगा या नहीं। यह "चेक" राज्य द्वारा निर्धारित किया जाता है जो आमतौर पर DOM click ईवेंट द्वारा ट्रिगर किया जाता है।

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

<p:ajax update="msgQuestion" event="valueChange" /> 

यह पाठ इनपुट और ड्रॉपडाउन और सही change ईवेंट हैंडलर autogenerate देगा:

PrimeFaces <p:ajax> के डिफ़ॉल्ट event प्रकार (और मानक JSF <f:ajax>) है, जो पहले से ही valueChange स्वचालित रूप से है इस को शामिल किया गया click रेडियोबूटन और चेकबॉक्स में ईवेंट हैंडलर।

लेकिन जैसा कि कहा गया है, यह डिफ़ॉल्टevent पहले से ही प्रकार है। बस इसे पूरी तरह से छोड़ दें।

<p:ajax update="msgQuestion" /> 
+0

यह या तो काम नहीं करता है। अगर मैं ui को हटा देता हूं: दोहराना यह ठीक काम करता है। –

+2

मैंने अपने जेएसएफ को 2.1.13 तक अपग्रेड किया और यह अभी ठीक काम करता है! –

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