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;
}