Как получить атрибут ID h: selectBooleanCheckbox в компоненте поддержки

Итак, вот компонент jsf:

<h:selectBooleanCheckbox id="cb#{index}" value="#{backingBean.value}" />

А вот часть поддержки bean-компонента java:

/**
 * getValue is a method which checks if a checkbox is selected or not, using the checkbox ID
 */
public boolean getValue() { 
  //TODO: get the checkbox id
  String checkboxID = ??

  if (getCheckedIDs().contains(checkboxID)) {
    return true;
  }

  return false;
}

Когда страница загружает флажки, я хочу проверить таким образом, установлен ли флажок или нет. Так вот вопрос, что писать вместо ?? чтобы получить идентификатор флажка, который вызвал метод? Очень важно, что я могу использовать только JSF 1.1, поэтому есть много решений, которые не будут работать с этой версией.

Еще одна очень важная вещь заключается в том, что я не могу использовать сеттер/геттер в резервном компоненте. как здесь: https://stackoverflow.com/a/48006066/9158590, потому что мне нужно сохранить значение флажок сразу после того, как он установлен или снят, а не только после отправки. Я уже разрешил сохранение в компоненте поддержки сразу после проверки, мне нужно только отправить обратно значение true или false при загрузке страницы.
Это связано с тем, что я использую навигацию по страницам и, например, когда я устанавливаю флажок на странице 1, и перейдите на другую страницу, а затем вернитесь назад, поле больше не выбрано (только в фоновом компоненте).


person Elliot    schedule 31.12.2017    source источник
comment
Вы можете реализовать метод .addId(String id) в своем bean-компоненте и вызвать его в своем .xhtml. Ваш Vollection должен быть набором, может сработать.   -  person sofarsoghood    schedule 02.01.2018


Ответы (1)


   FacesContext context = FacesContext.getCurrentInstance();
   UIComponent comp = context.getViewRoot().findComponent("Parent Element 
   id of HtmlSelectBooleanCheckbox ");
   for(UIComponent c : comp.getChildren())
    if(c instanceof HtmlSelectBooleanCheckbox)
   {
   // do something
   }

Переходя к вашему вопросу: значение переменной "#{backingBean.value}" истинно, тогда флажок будет установлен

person saurabhiitr    schedule 02.01.2018