I have 1 very long form that needs to be split into pieces, but it is submitted and validated as one.
I have split it into tr:panelTabbed sections each of which displays a set of fields.
The validation messages are displayed currectly in the first tab but if one of the other tabs is checked its' validation messages are not displayed.
Tabbing back to the original, its' validation messages are also not displayed.
Is there any way around this?
It looks like the tab interface only generates 1 tab at a time and requires a page reload for every tab.
Alternatively is there a better way to break up a large form? I don't really like the look of the "train" navigation but will it accomplish the goal here?
EDIT: I am using Myfaces and Trinidad and cannot use another component library due to corporate guidelines.
EDIT: I have posted the XHTML:
<ui:define name="output">
<div id="container">
<tr:panelTabbed position="above">
<tr:showDetailItem text="#{odMessages['MSG_ORDER_DESK_SECTION_LABEL_EVS']}" rendered="#{taskHandler.task.evsDisplayInOD}">
<!-- Tab 1-->
<tr:panelCaptionGroup captionText="#{odMessages['MSG_ORDER_DESK_SECTION_LABEL_EVS']}" rendered="#{taskHandler.task.evsDisplayInOD}">
<snip for brevity>
</tr:panelCaptionGroup>
</tr:showDetailItem>
<tr:showDetailItem text="General Order Information" disabled="#{taskHandler.task.evsDisplayInOD}" disclosed="true">
<!-- Tab 2-->
<tr:panelCaptionGroup captionText="#{odMessages['MSG_ORDER_DESK_SECTION_LABEL_REP']}">
<tr:panelFormLayout>
<snip>
</tr:panelFormLayout>
</tr:panelCaptionGroup>
<tr:spacer height="15px"/>
<tr:panelCaptionGroup captionText="#{odMessages['MSG_ORDER_DESK_SECTION_LABEL_CMR']}">
<tr:panelFormLayout>
<snip>
</tr:panelFormLayout>
</tr:panelCaptionGroup>
</tr:showDetailItem>
<tr:showDetailItem text="#{odMessages['MSG_ORDER_DESK_SECTION_LABEL_PO']}" disabled="#{taskHandler.task.evsDisplayInOD}" disclosed="true">
<!-- Tab 3 -->
<tr:panelCaptionGroup captionText="#{odMessages['MSG_ORDER_DESK_SECTION_LABEL_PO']}">
<h:panelGroup styleClass="group">
<snip>
</h:panelGroup>
<h:panelGroup styleClass="group">
<snip>
</h:panelGroup>
<h:panelGroup styleClass="group">
<snip>
</h:panelGroup>
</tr:panelCaptionGroup>
<tr:spacer height="15px"/>
<tr:panelCaptionGroup captionText="#{odMessages['MSG_ORDER_DESK_SECTION_LABEL_PO']}">
<h:panelGroup styleClass="group">
<snip>
</h:panelGroup>
<h:panelGroup styleClass="group">
<snip>
</h:panelGroup>
<h:panelGroup styleClass="group">
<snip>
</h:panelGroup>
</tr:panelCaptionGroup>
</tr:showDetailItem>
<tr:showDetailItem text="Translation Information" disabled="#{!taskHandler.task.translation.required}">
<ui:include src="ToDo_ICN_trans.xhtml"/>
</tr:showDetailItem>
</tr:panelTabbed>
<h:outputScript name="script/orderDeskPODocument.js"/>
</div>
</ui:define>
<ui:define name="input">
...
</ui:define>