действительно ли возможно сделать это в jsf?

Я имею / группа переключателей и CommandButton

Два случая

1) Когда одна из кнопки нажата +, кнопка нажата, я должен отобразиться, некоторый другой раздел (скажите что DIV), и остановки выполнения. средства, Кнопка не должна отправлять форму серверу

1) Когда НИ ОДНА из кнопки не нажата +, кнопка нажата, я должен отправить форму серверу и отобразить сообщение Поверхностей, что он ничего не выбрал.

Я не хочу делать это предупреждение, поскольку JavaScript раскрывается. Предложения приветствуются.

1
задан gekrish 26 June 2010 в 11:35
поделиться

1 ответ

Да, это возможно с небольшой помощью JavaScript. Проще всего было бы передать ID элементов div секции как значение радиокнопки, а затем перебрать все радиокнопки и показать/скрыть элемент, основываясь на состоянии кнопки checked. В конце вы должны позволить JS-функции возвращать false, когда любая кнопка отмечена, так что действие по умолчанию кнопки не будет вызвано и форма не будет отправлена на сервер.

Вот пример запуска:

<h:form id="form">
    <h:selectOneRadio id="radio">
        <f:selectItem itemValue="section1" itemLabel="Show section1" />
        <f:selectItem itemValue="section2" itemLabel="Show section2" />
        <f:selectItem itemValue="section3" itemLabel="Show section3" />
    </h:selectOneRadio>
    <h:commandButton id="button" value="show section" 
        action="#{bean.submit}" onclick="return showSection(this.form)" />
    <h:messages />
</h:form>
<h:panelGroup layout="block" id="section1" class="section">section1</h:panelGroup>
<h:panelGroup layout="block" id="section2" class="section">section2</h:panelGroup>
<h:panelGroup layout="block" id="section3" class="section">section3</h:panelGroup>

с этим CSS

.section {
    display: none;
}

и этим JS

function showSection(form) {
    var radiobuttons = form['form:radio'];
    var selected = false;
    for (var i = 0; i < radiobuttons.length; i++) {
        var radiobutton = radiobuttons[i];
        var section = document.getElementById(radiobutton.value);
        if (radiobutton.checked) {
            section.style.display = 'block';
            selected = true;
        } else {
            section.style.display = 'none';
        }
    }
    return !selected; // Submits to server if none is selected.
}

и JSF bean (мы, конечно, предполагаем, что это действие будет только вызываться, если не выбран ни один).

public void submit() {
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Please select!"));
}
2
ответ дан 2 September 2019 в 23:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: