2012-11-04 26 views
15

Kullanıcı, bir radyo düğmesine her tıkladığında doğrulama mesajlarını görüntülemeye çalışıyorum. Eğer radyo olmadığına dinlemek istediğinizdePrimefaces 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

Bu, ui ile ilgili gibi görünüyor: yineleme ... ui olmadan gayet iyi çalışıyor: tek bir soru üzerinde tekrarlayın. –

+0

Lütfen buna başvurun: - http://stackoverflow.com/questions/14551145/selectoneradio-inside-subtable-ajax-call-not-working?rq=1 –

cevap

30

HTML DOM change olay yanlış bir olaydır:

ben radyo düğmesini tıkladığında ben Gönder düğmesini tıklayabilir, ancak bu yalnızca eser

düğmesine (veya onay kutusuna) tıklanır. Bunun için click olayını kullanmalısınız.

Radyo düğmesinin (ve onay kutusunun) değeri temel olarak hiçbir zaman değişmez. Her zaman aynı değere sahiptir. Soru, bu değerin sunucu tarafına gönderilip gönderilmeyeceğidir. Bu genellikle DOM click olayı tarafından tetiklenen "işaretli" durumu tarafından belirlenir.

Radyo düğmeleri/onay kutularındaki change olayının gerçek davranışı, kullanılan web tarayıcısına bağlıdır. Davranış özellikle IE tarayıcısında tutarsızdır. Sadece kullanılan sürüme değil, aynı zamanda kullanılan işleme moduna de bağlıdır (standart mod vs quirks modu). Belki de test yaparken IE kullanıyordunuz.

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

Bu yazı giriş ve açılır menülerde ve sağ change olay işleyicisi autogenerate olacaktır:

PrimeFaces <p:ajax> varsayılan event tipi (ve standart MTU <f:ajax>) zaten otomatik valueChange olduğunu bu kapakları Radyo düğmelerinde ve onay kutularında click olay işleyicisi.

Ancak, daha önce de belirtildiği gibi, varsayılanevent türüdür. Tamamen atla.

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

Bu, ya da çalışmıyor. Eğer ui'yi kaldırırsam tekrar edersiniz. –

+2

JSF'yi 2.1.13'e yükselttim ve şimdi iyi çalışıyor! –