Как отменить переключатель панели вкладок в RichFaces 3.3.x - PullRequest
1 голос
/ 27 мая 2011

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

Я пробовал различные события, которые я могу найти. У кого-нибудь есть идеи, возможно ли это и как мне этого добиться? Я бы предпочел сохранить его на стороне клиента в javascript, если это возможно.

Использование примера кода, например ниже.

<rich:tabPanel selectedTab="Info" switchType="client" contentClass="hz-record-tabpanel" ontabchange="doTabChange();"  onbeforeitemchange="doTabChange();" onbeforetabchange="doTabChange();">
                <rich:tab name="Info" label="Tab Label" onlabelclick="doTabChange();">
                    <ui:include src="info.xhtml" />
                </rich:tab>
                <rich:tab name="Officers" label="Officers" onlabelclick="doTabChange();" ontableave="doTabChange();">
                    <ui:include src="officers.xhtml" />
                </rich:tab>
                <rich:tab name="CardServices" label="Card Services" onlabelclick="doTabChange();">
                    <ui:include src="cardservices.xhtml" />
                </rich:tab> 
                <rich:tab name="M2MLimits" label="M2M Limits" onlabelclick="doTabChange();">
                    <ui:include src="m2mlimits.xhtml" />
                </rich:tab> 
                <rich:tab name="AccountServices" label="Account Services" onlabelclick="doTabChange();">
                    <ui:include src="accountservices.xhtml" />
                </rich:tab>                 
            </rich:tabPanel>

Есть идеи?

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Мы в конечном итоге перешли к Richfaces 4 (4.2), и я успешно использую события itemchange и beforeitemchange

.

Эти события срабатывают дважды (не вычислили это однопока), поэтому вам не нужно ничего слишком интенсивного в коде обработчика.

Если beforeitemchange возвращает false (дважды), то панель табуляции не переключится.

Я использую itemchange событие, чтобы запустить любой дополнительный JavaScript для форматирования данных и поместить фокус на первое поле ввода в форме на этой вкладке.

1 голос
/ 24 августа 2011

Это кнопка, которую я использую для закрытия rich: modalPanel после хорошей проверки:

<a4j:commandButton id="btnModify" value="Modifier" actionListener="#{editCityActions.onButtonModifyClick}" data="#{facesContext.maximumSeverity.ordinal ge 2}" oncomplete="if(event.data == false) { #{rich:component('frmEditCity')}.hide(); }" render="tblCities" />

Я думаю, что вы можете применить событие с a4j: ajax или что-то в этом роде!

...