Как включить/отключить определенный элемент в selectManyCheckbox на ajax keyUp

Мне нужна ваша помощь в включении/отключении определенного элемента в компоненте selectManyCheckbox на основе клавиши вызова ajax.

Когда страница загружается, я запускаю приведенный ниже метод для заполнения элементов selectManyCheckbox в форме:

 @PostConstruct

    public void init() throws SQLException {

    this.hrCertificatesList.add(new hrCertificate(("Employment"), "CE", false));

    this.hrCertificatesList.add(new hrCertificate(("Loan"), "LC", false));

}

А вот код jsf:

  <p:inputText id="selectedEmployee" value="#{HRRequest.selectedEmployeeCode}">

     <p:ajax event="keyup" update="employeeName" listener="#{HRRequest.getEmployeeName}" />

   </p:inputText>

<h:outputText id="employeeName" value="#{HRRequest.selectedEmployeeName}" />

<p:selectManyCheckbox id="hrCertificates" value="#{HRRequest.selectedHRCertificates}">
 <f:selectItems value="#{HRRequest.hrCertificatesList}" var="hrCertificate" 
itemLabel="#{hrCertificate.hrCertificateName}"
    itemValue="#{hrCertificate.hrCertificateCode}" itemDisabled="#{hrCertificate.hrBooleanCertificate}"/>

    </p:selectManyCheckbox>

После загрузки страницы все флажки включены, и когда пользователь вводит код сотрудника в inputText, будет запущен ajax для вызова метода для получения имени сотрудника и проверки наличия кредита или нет, если есть кредит, тогда флажок должен быть включен, в противном случае отключен.

Подводя итог моей проблеме, я хочу, чтобы когда значение переменной temp равно yes, мне нужно отключить только флажок кредита, а другой элемент Employment должен оставаться включенным, так как я могу это сделать?

Код бина:

 public String getEmployeeName() throws SQLException {
     if (temp.equals("Yes"))
{ 
//How to enable and disable the Loan checkbox only and to update the form view
RequestContext.getCurrentInstance().update(":HRform:hrCertificates");    
}

Пожалуйста, помогите.


person 99maas    schedule 05.07.2015    source источник
comment
@BalusC Я отредактировал тему, чтобы сделать ее более понятной, и подробнее объяснил код, так что не могли бы вы помочь и помочь?   -  person 99maas    schedule 06.07.2015
comment
@BalusC hrBooleanCertificate Я определил его в классе hrCertificate. hrBooleanCertificate ссылается на логическое значение false, которое находится в методе init(), где вначале все флажки должны быть включены, но затем я не знаю, что делать дальше, чтобы отключить элемент Loan.   -  person 99maas    schedule 06.07.2015
comment
Итак, вы имеете в виду, что я должен определить в своем компоненте новую логическую переменную с именем hrBooleanCertificate и инициализировать ее значением false по умолчанию, а затем в операторе IF сделать ее истинной, если да, или ложной, если нет, на основе условия, а затем обновить компонент ?Это будет сделано только для флажка кредита?   -  person 99maas    schedule 06.07.2015
comment
@BalusC правильно ли сказано выше?   -  person 99maas    schedule 06.07.2015


Ответы (1)


Просто манипулируйте моделью таким образом, чтобы itemDisabled="#{hrCertificate.hrBooleanCertificate}" оценивал true вместо false, чтобы представление знало, что оно должно делать.

Один из способов может быть:

this.hrCertificatesList.get(1).setHrBooleanCertificate(true);
person BalusC    schedule 06.07.2015
comment
Я попробую это завтра и вернусь к вам. Еще одна вещь, я должен обновить @form? - person 99maas; 06.07.2015
comment
Вам действительно следует обновить представление, если вы хотите отразить изменения в модели. - person BalusC; 06.07.2015
comment
Спасибо за помощника и помощь. Сработало отлично, Круто - person 99maas; 07.07.2015