Как изменить расположение переключателя или флажка

Мы используем h:selectManyCheckbox и h:selectOneRadio для отображения выбора для определенного элемента. Мы хотели бы гибко размещать варианты выбора по горизонтали, вертикали или сортировать по нескольким столбцам.

e.g. 
1. Horizontally
one two three four five six

2. Vertically
one 
two
three
four
five
six

3. 2 columns
one two
three four
five six

4. 3 columns
one two three
four five six

Как мы можем это сделать, используя существующие теги jsf или внося соответствующие изменения.


person user339108    schedule 10.08.2010    source источник
comment
Я думаю, что пользовательские компоненты пользовательского интерфейса JSF или собственный тег jsp - это решение для вас...   -  person Garis M Suero    schedule 10.08.2010
comment
отформатированный текст, чтобы сделать его более понятным   -  person user339108    schedule 10.08.2010
comment
для 1-го и второго вопросов вы можете использовать атрибут макета, например layout=lineDirection или layout=pageDirection внутри этих тегов jsf.   -  person khairil    schedule 10.08.2010
comment
@khairil - да, мы знаем, что 1,2 решаются по умолчанию, мы заинтересованы в решении 3,4 наряду с существующей поддержкой   -  person user339108    schedule 10.08.2010


Ответы (4)


Вы можете попробовать использовать библиотеку Apache Tomahawk со свойством layoutWidth. Или создайте свой собственный компонент JSF

person Losted    schedule 10.08.2010
comment
Использование свойства Tomahawk t:selectOneRadio with layoutWidth является ответом. - person BalusC; 10.08.2010

  1. Во-первых, четко определитесь, чего вы хотите...
  2. Взгляните на: Разработка пользовательского Тег JSF
  3. Знайте, какие атрибуты вы можете передать в своем новом пользовательском теге, например (<h:customRadioButtons list="arraylist" style="table" name="rbuttons" columns="2" />)
  4. Разработайте свой будущий customTag...
person Garis M Suero    schedule 10.08.2010

используя томагавк, мы можем попробовать использовать layout="spread", например:

 <t:selectOneRadio id="test" value="one" layout="spread" border="1">
    <f:selectItem itemLabel="one" itemValue="one" />
    <f:selectItem itemLabel="two" itemValue="two" />
    <f:selectItem itemLabel="three" itemValue="three" />
    <f:selectItem itemLabel="four" itemValue="four" />
    <f:selectItem itemLabel="five" itemValue="five" />      
  </t:selectOneRadio>
  <t:panelGrid columns="2">
    <t:radio for="test" index="0"></t:radio>
    <t:radio for="test" index="1"></t:radio>
  </t:panelGrid>
  <t:panelGrid columns="3">
    <t:radio for="test" index="2"></t:radio>                
    <t:radio for="test" index="3"></t:radio>
    <t:radio for="test" index="4"></t:radio>
  </t:panelGrid>

затем используйте ajax для повторного рендеринга этого t: selectOneRadio, чтобы изменить его на другой макет.

person khairil    schedule 10.08.2010
comment
мы не используем томагавк, мы используем ричфейсы вместе с мохаррой (Sun's RI) - person user339108; 11.08.2010

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

person TaherT    schedule 10.08.2010