Работает ли Rich Faces AjaxValidator с selectOneMenu

#jsf #richfaces

#jsf #richfaces

Вопрос:

Люди,

Это вопрос JSF, специально для Rich Faces 3.3.3.Final

Я пытаюсь заставить Rich Faces Ajax Validator (rich: ajaxValidator) работать со стандартным выпадающим меню JSF (h: selectOneMenu), но у меня ничего не получается.

В принципе, я хочу, чтобы проверка AJAX выполнялась, когда выпадающий список теряет фокус или выбирается элемент в выпадающем списке. Ниже приведен код для последнего, что я пробовал:

 <h:selectOneMenu id="sector" value="#{thing.sector}">  
  <f:selectItems value="#{selectItemMap['sectors']}"  
                 var="sector"  
                 itemLabel="#{msg[sector.itemLabel]}"  
                 itemValue="#{sector.itemValue}" />  
    <rich:ajaxValidator event="onblur"/>  
</h:selectOneMenu>  
  

Но я также пытался:

 <rich:ajaxValidator event="oninputblur"/>  
  

и

 <rich:ajaxValidator event="onchange"/>  
  

и

 <rich:ajaxValidator event="onchanged"/>  
  

и

      <rich:ajaxValidator event="onblur"/>  
<rich:ajaxValidator event="onchanged"/>
  

и

 <rich:ajaxValidator event="onblur"/>  
<rich:ajaxValidator event="onchange"/>  
  

и

 <rich:ajaxValidator event="oninputblur"/>  
<rich:ajaxValidator event="onchange"/>  
  

и

 <rich:ajaxValidator event="oninputblur"/>  
<rich:ajaxValidator event="onchanged"/> 
  

Однако ни один из них не работает. Под этим я подразумеваю, что я не вижу, чтобы что-то происходило, хотя я могу видеть события, обрабатываемые в моей консоли журнала для других полей, таких как h: inputText, стандартный ввод HTML и rich: calendar.

Кому-нибудь удалось заставить Rich Faces AJAX validation работать для поля selectOneMenu и как вам это удалось? О, и для какой версии Rich Faces?

Спасибо.

Ответ №1:

Вот пример из моего старого приложения, использующего Richfaces 3.3:

 <h:selectOneMenu
    id="users"
    value="#{userBean.user}"
    required="true"
    requiredMessage="Selected user is required."
    converter="selectItemConverter">
    <rich:ajaxValidator ajaxSingle="true" event="onchange" />
    <f:validator validatorId="isValidValidator" />
    <t:selectItems 
        value="#{userBean.users}"
        var="user" 
        itemLabel="#{user.name}"
        itemValue="#{user}" />
</h:selectOneMenu>
<rich:message for="users" errorClass="error"/>
  

Ответ №2:

Ого!

Работает следующее:

 <h:selectOneMenu id="subSector" value="#{registerContracts.currentContract.subSector}">
  <f:selectItems value="#{selectItemMap['RctSectorTypes']}" var="subSector" itemLabel="#{msg[subSector.itemLabel]}" itemValue="#{subSector.itemValue}" />
  <rich:ajaxValidator event="onblur"/>
  <rich:ajaxValidator event="onchange"/>
</h:selectOneMenu>
  

Очевидно, я был недостаточно усерден в тестировании вышеупомянутых опций.

Извините за это.