JSF: более настраиваемые selectManyCheckbox и selectOneRadio

#jsf

#jsf

Вопрос:

Я использую selectManyCheckboxes и selectOneRadios, и я хотел бы каким-то образом настроить их. Было бы достаточно, если бы была возможность сгруппировать элементы выбора в соответствии с определенным свойством (например, с заголовком для каждой группы или строкой между каждой группой).

Есть ли какой-либо способ добиться этого с помощью стандартного JSF 2 Tomahawk?

Ответ №1:

Да, конечно, это возможно. Вы уже сделали хороший выбор с Tomahawk. Именно это одна из очень немногих библиотек компонентов, предоставляющая компоненты, которые позволяют вам размещать флажки и радиокнопки везде так, как вы хотите, вместо того, чтобы помещать их в таблицу, как это делают стандартные компоненты.

Вот начальный пример с <t:selectOneRadio> (обратите внимание на новый layout="spread" атрибут, значения по умолчанию в JSF — pageDirection и lineDirection ) и <t:radio> .

 <t:selectOneRadio id="foo" value="#{bean.selectedItem}" layout="spread">
    <f:selectItems value="#{bean.selectItems}" />
</t:selectOneRadio>

<p><t:radio for="foo" index="0" /> radio in paragraph</p>
<h1><t:radio for="foo" index="1" /> radio in heading</h1>
<hr />
<p><t:radio for="foo" index="2" /> radio after horizontal rule</p>
  

<t:selectManyCheckbox> Также поддерживается layout="spread" с <t:checkbox> таким же образом.

Это позволяет создавать более мелкозернистую разметку HTML / CSS на этих кнопках / флажках и вокруг них.

Комментарии:

1. Спасибо! Но я не уверен, соответствует ли это решение моим потребностям. Я не знаю количество и порядок элементов выбора до выполнения, поэтому индекс для меня не очень полезен. Моя ситуация такова: у меня есть объекты со свойством «категория» (может быть, например, x, y или z), и я хотел бы сгруппировать их в соответствии с этим свойством. Могу ли я как-то достичь этого с помощью этого решения? Я не вижу, как.

2. Извините за поздний комментарий, полностью пропустил этот. Что касается индекса: вы можете использовать <t:dataList> для перебора их с помощью индекса цикла. Что касается группировки: на этот вопрос сложно ответить, пока неясно, как вы хотели бы, чтобы выглядел конечный HTML-код, но вы могли бы, по крайней мере, условно отобразить с использованием rendered атрибута.