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

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

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

И вот часть поддержки 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, поэтому есть много решений, которые не будут работать с этой версией.

1 ответ

РЕДАКТИРОВАТЬ: как правильно отмечает @Kukeltje, основная проблема заключается в том, что выражение значения является неправильным. После того, как вы измените это, ниже применимо.

Вам не нужно "вычислять" значение ("установлено" или "не установлено") вашего флажка. JSF просто позвонит backingbean.setValue(x)x являющийся true или же false) в зависимости от того, включен ли флажок в данный момент (т.е. когда вы отправляете страницу).

Это происходит автоматически, потому что вы сказали value="#{backingBean.value}",

Так в setValue() вы просто храните аргумент, в getValue вы возвращаете сохраненный аргумент. Остальное делает JSF для вас.

Если вы хотите, чтобы флажок был включен по умолчанию, установите для сохраненного значения значение true.

Например:

private boolean storedValue = true;  // or false if you want it to be off by default

public boolean getValue() {
  return storedValue;
}

public void setValue(boolean value) {
  this.storedValue = value;
}
Другие вопросы по тегам