Мне нужна кнопка, которая выполняет действие, но не запускает проверку или не обновляет страницу (JSF 2.0) - PullRequest
0 голосов
/ 06 апреля 2011

Мне нужно, чтобы вы порекомендовали мне компонент JSF, который может помочь в следующем сценарии (сначала я вставлю изображение, которое поможет мне объяснить): enter image description here

Эта страница, которую вы видите на изображенииявляется страницей регистрации, каждая из панелей имеет различные поля и гаджеты, при нажатии кнопки регистрации новый пользователь сохраняется в базе данных.

Проблема, с которой я столкнулся, заключается в отображении кнопок.Кнопки в верхней части каждой панели при нажатии должны отображать одну панель и скрывать другую, но они не должны вызывать проверку поля.

Я использую проверку поля по атрибуту «validator» (в сочетании с компонентом поддержки)метод), что большинство полей ввода JSF имеют.В настоящее время все, что вы видите, находится внутри одной h: form.

- что мне делать, чтобы отобразить панель и скрыть другую, не вызывая проверку скрытой панели?

-Есть ли другая альтернатива h: commandLink или h: commandButton (они запускают проверку)?

-Поставка каждой панели в другую форму h: может помочь?что разрешено?)

-Как вы думаете, будет лучшим подходом?

Ответы [ 4 ]

3 голосов
/ 07 апреля 2011

Используйте p: tabView Primefaces, затем поместите свое содержимое (панели регистрации) в отдельную вкладку, используйте отдельную форму для обеих вкладок, это решит вашу проблему ....

например

 <p:tabView>
        <p:tab title="panel1">
            <h:form id="form1" prependId="false">
                <h:inputText label="Sample Label"/>
                <p:commandButton value="register"/>
            </h:form>
        </p:tab>
        <p:tab title="panel2">
            <h:form id="form2" prependId="false">
                <h:inputText label="Sample Label"/>
                <p:commandButton value="register"/>
            </h:form>
        </p:tab>
    </p:tabView>
1 голос
/ 07 апреля 2011

Для переключения панели, Почему вы не используете JavaScript?

<h:commandButton value="Show panel 1" onclick="$('#panel1').hide();$('#panel2').show();return false;"/>

return false будет ограничивать отправку страницы, поэтому страница не будет обновляться и, поскольку никакие данные не отправляются обратно на сервер, этап проверки никогда не будет выполнен.

Итог: ИМХО, это может быть обработано на стороне самого клиента.

1 голос
/ 06 апреля 2011

- что я должен сделать, чтобы отобразить панель и скрыть другую, не вызывая проверку скрытой панели?

Использовать две h:form

Есть ли другая альтернатива h: commandLink или h: commandButton (они запускают проверку)?

, чтобы сделать POST, вы должны использовать только их

Я бы использовал rich:modalpanel для этой цели

0 голосов
/ 06 апреля 2011

Вам известен непосредственный атрибут, позволяющий обновлять без изменения данных.

К сожалению, он не запоминает внесенные изменения, поэтому вы можете в конечном итоге выполнить проверку в вашем действии, а неСам JSF.

...