I'm using rich:tabPanel to organise complex object editing
[Seam 1.2.1GA/RichFaces 3.1.3 GA]
On each tab I place set of forms responsible for editiong different group of properties.
I need to perform form-submission and validation before switching to the next tab.
I try to define ontableave javascript like ="getMyForm().submit()" which actually perform required form submission and validation (validation messages displayed on this tab)
But how I can prevent tab-switching if validation fails ? Because if object state on the server side will be invalid (not corrctly filled) I will got a errors then I try to save it in db and in the end-of-the-end - it is correct to stay on the form which is filled with error, because later it is hard to redirect user to the "error" tab (and I may have more then one tbas with non-valid data).
I don't see possible ways how I can implement that with rich:tabPanel event model - "Perform form submission and validation with preventing user to switch to another tab if validation fails (or any other server-side exception) occurs).
I think I need some listener which can return boolean value to tabPanel component or throw "TabSwitchNotAllowed" exception at the server-side.
I wan't to prevent switching from "tab1" if the server-side form validation failed.
<rich:tabPanel id="campaignBuilderTabs" switchType="ajax" selectedTab="#{selectedTab.name}"> <rich:tab label="Properties" id="tab1" ontableave="getElementbyId('myForm').submit();"> <h:form id='myForm'> ....input fields... </h:form> </rich:tab> <rich:tab label="Workspace" id="tab2" > <ui:include src="/WEB-INF/incl/tab3.xhtml" /> </rich:tab> <rich:tab label="Summary" id="tab3" > <ui:include src="/WEB-INF/incl/tab4.xhtml" /> </rich:tab> </rich:tabPanel>