JSF 2.0 и флажки - PullRequest
       14

JSF 2.0 и флажки

1 голос
/ 28 февраля 2012

Я новичок в этом, так что вы можете попробовать помочь мне, пожалуйста.

В моем Java-классе

public String mycheckbox;
// setters and getters for mycheckbox

В моей форме

<input id="f2_chk_1" type="checkbox" value="1" name="f2_chk_1">
1
<br>
<input id="f2_chk_2" type="checkbox" value="2" name="f2_chk_2">
2
<br>
<input id="f2_chk_3" type="checkbox" value="3" name="f2_chk_3">
3
<br>
<input id="f2_chk_4" type="checkbox" value="4" name="f2_chk_4">
4
<br>
<input id="f2_chk_5" type="checkbox" value="5" name="f2_chk_5">
5
<br>
<input id="f2_chk_6" type="checkbox" value="6" name="f2_chk_6">
MT
<br>
<input id="f2_chk_7" type="checkbox" value="7" name="f2_chk_7">
6

Что я хочу, это когда я отмечаю флажок, mycheckbox должен автоматически получить значение;даже несколько флажков проверены.

Я гуглил это, но нашел примеры, где флажки определены в самом классе java и вещах, которые не имеют смысла для меня.

Ответы [ 3 ]

2 голосов
/ 28 февраля 2012

Для этого можно использовать компонент <h:selectManyCheckbox> с List<String> в качестве доступных значений и другим List<String> в качестве проверенных значений.Вот полный пример запуска, который удовлетворяет вашим начальным требованиям:

Представление:

<h:form>
    <h:selectManyCheckbox value="#{bean.checkedValues}" layout="pageDirection">
        <f:selectItems value="#{bean.availableValues}" />
    </h:selectManyCheckbox>
    <h:commandButton value="submit" action="#{bean.submit}" />
</h:form>

Bean:

@ManagedBean
@ViewScoped
public class Bean {

    private List<String> checkedValues;
    private List<String> availableValues;

    @PostConstruct
    public void init() {
        availableValues = new ArrayList<String>();
        availableValues.add("1");
        availableValues.add("2");
        availableValues.add("3");
        // ...
    }

    public void submit() {
        System.out.println("Checked values: " + checkedValues);
    }

    public List<String> getCheckedValues() {
        return checkedValues;
    }

    public void setCheckedValues(List<String> checkedValues) {
        this.checkedValues = checkedValues;
    }

    public List<String> getAvailableValues() {
        return availableValues;
    }

}
1 голос
/ 28 февраля 2012

Во-первых, вы должны изменить тип переменной в вашем Java-классе на boolean

public boolean myCheckbox;

Полный пример можно посмотреть здесь флажок mkyong jsf-2

Во-вторых, чтобы выбрать один флажок, когда другие отмечены, вы можете использовать javascript и действовать после того, как флажок будет установлен \ снят

<h:selectBooleanCheckbox value="#{Class.Varible}" onselect="checkCheckbox()" />

и создайте функцию js, которая реализует бизнес-логику.

function checkCheckbox(){

  // if at least one checkbox is checked, check specific checkbox


}

Вам следует рассмотреть возможность использования selectManyCheckbox .

Надеюсь, это поможет

0 голосов
/ 28 февраля 2012

Ссылка Аба Дов довольно хорошая, я думаю. Я не понимаю, почему тебе нужно что-то лучше. Но вы можете определить список переменных и позволить этому списку отображать флажки.

в вашем бобе

private ArrayList<SelectItem> items;

public ArrayList<SelectItem> getItems(){
   items = new ArrayList<SelectItem>();
   items.add(new SelectItem(<value>, <description>);
    ...
   items.add(new SelectItem(<value>, <description>);
   return items
}

и на вашей странице jsf

<h:selectManyCheckbox value="#{<yourbean>.checkboxvalue}">
<f:selectItems value="#{<yourbean>.items}" />
<h:selectManyCheckbox />
...