Использование нескольких логических значений в качестве значения для selectManyCheckbox - PullRequest
0 голосов
/ 30 августа 2011

У меня есть несколько логических значений, которые я хочу сгруппировать, используя h: selectManyCheckbox. Я не хочу, чтобы значение было ArrayList или Array, просто мои булевы поля XX. Есть ли в любом случае это может быть достигнуто?

Ответы [ 2 ]

1 голос
/ 30 августа 2011

Нет, вы не можете.Просто используйте <h:selectBooleanCheckbox> для каждого.

<h:selectBooleanCheckbox value="#{bean.boolean1}" />
<h:selectBooleanCheckbox value="#{bean.boolean2}" />
<h:selectBooleanCheckbox value="#{bean.boolean3}" />
...
0 голосов
/ 19 декабря 2017

Я знаю, что вопрос старый, но в случае, если кто-то (как и я) все еще ищет ответ

Использование Java 8:

<h:selectManyCheckbox value="#{bean.checks}">
  <f:selectItem itemValue="value1" itemLabel="Label 1" />
  <f:selectItem itemValue="value2" itemLabel="Label 2" />
  <f:selectItem itemValue="value3" itemLabel="Label 3" />  
</h:selectManyCheckbox>

Bean:

private List<String> checks;
private Map<String, Runnable> checksMap;

private void initMap() {
  checksMap = new HashMap<>();
  checksMap.put("value1",   () -> myentity.setBoolean1(true));
  checksMap.put("value2",   () -> myentity.setBoolean2(true));
  checksMap.put("valueN",   () -> myentity.setBooleanN(true));
}

Когда вы сохраняете свою сущность, просто повторяйте выбранные чеки и устанавливайте логические значения в соответствии с checkMap:

checks.stream().forEach( (e) -> checksMap.get(e).run() );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...