tabPanel, tab, switch Type Client question
indyjones Oct 24, 2007 11:05 AMI have a tab panel with 2 tabs.
1 tab is a group of required input boxes.
The other tab is 2 data tables. The user can click on a record in one table and it will be moved to the other table. Kinda like a list of available records and selected records.
After all of that, there is a commandButton that takes all this data and saves it to the database.
Everything works great except for 1 thing....the required input boxes...
What I want is when the user hits the button, to go to the tab that has validation errors.
If I am on tab 2 and click update, I want it to go to tab one if some of the input boxes are not filled in.
I almost get this functionality with the required="true" on tab one. If I add this and go to tab 2 and try to update, the user is taken back to tab 1 and errors are displayed.
But, if I go to tab 2 and click on a record in the data table and then hit update....it doen't take me back to tab 1 if there are errors. Its almost like the submit from the data table is messing it up...
Here is the code....
<a4j:commandButton id="btnUpdateRole" value="Update" action="#{rolemanager.updateRole}"></a4j:commandButton>
<rich:tabPanel id="tplRoleInfo" switchType="client">
<rich:tab label="General">
<h:panelGrid columns="2" columnClasses="name, value">
<h:outputText value="Name:" />
<s:decorate>
<h:inputText style="width: 130px;" required="true" value="#{rolemanager.selectedRole.name}">
<s:validate/>
</h:inputText>
</s:decorate>
<h:outputText value="Value:" />
<h:outputText value="#{rolemanager.selectedRole.value}" id="iptSelvalue" />
<h:outputText value="Description:" />
<s:decorate>
<h:inputTextarea rows="5" cols="45" required="true" value="#{rolemanager.selectedRole.description}" >
<s:validate/>
</h:inputTextarea>
</s:decorate>
</h:panelGrid>
</rich:tab>
<rich:tab label="Permissions">
<h:panelGrid columns="2" columnClasses="top, top" >
<h:panelGrid columns="1" columnClasses="top" width="400px">
<rich:dataTable id="tblAvailablePermissions"
var="varPermission"
value="#{rolemanager.permissions}" >
<a4j:support event="onRowClick" ajaxSingle="true" action="#{rolemanager.addPermission(varPermission)}" />
<f:facet name="header">
<rich:column breakBefore="true">
<h:outputText value="Name" />
</rich:column>
</f:facet>
<rich:column><h:outputText value="#{varPermission.name}" /></rich:column>
</rich:dataTable>
</h:panelGrid>
<h:panelGrid columns="1" columnClasses="top" width="400px">
<rich:dataTable id="tblSelectedPermissions"
var="varNewPermission"
value="#{rolemanager.selectedRole.permissions}">
<a4j:support event="onRowClick" ajaxSingle="true" action="#{rolemanager.removePermission(varNewPermission)}" />
<f:facet name="header">
<rich:column breakBefore="true">
<h:outputText value="Name" />
</rich:column>
</f:facet>
<rich:column><h:outputText value="#{varNewPermission.name}" /></rich:column>
</rich:dataTable>
</h:panelGrid>
</h:panelGrid>
</rich:tab>
</rich:tabPanel>