This content has been marked as final. Show 2 replies
The application I am currently developing follows the following Form scenario:
1. User selects a DataModel element for editing which takes them to view editDataModelSelection.xhtml.
2. User makes changes to the DataModelSelection.
3. User selects an associated Object for editing which takes the user to sub-view editAggregateObject.xhtml
4. User makes changes to associated object and submits those changes.
5. This takes the user back to editDataModelSelection.xhtml view where the changes to the associated object are shown updated to the DataModelSelection.
5. User submits the changes to the DataModelSelection which persists both DataModelSelection changes and associated object changes as well.
A conversation is nested when the user accesses view editAggregateObject.xhtml. This allows a user to back-button to the editDataModelSelection.xhtml prior to editing the aggregate object without causing state inconsistencies between what the user sees and what actually persists on submit.
The trouble is the display of breadcrumbs through the ConversationStack. When the user traverses the following path:
view editDataModelSelection.xhtml -> action(editAssociatedObject) conversation nested here
-> view editAggregateObject.xhtml -> action(submitChanges)
-> view editDataModelSelection.xhtml
In this scenario, the breadcrumbs by default are displayed as:
Edit Data Model Selection | Edit Data Model Selection
This makes sense due to the fact that the nested conversation has the same view-id as the outer conversation. This continues the more times the user edits an associated object. The implementation I am using filters ConversationEntries from the ConversationStack based on the view-id so that the breadcrumbs are simply displayed as:
Edit Data Model Selection
regardless of the nested ConversationEntries in this scenario. Is there a better way to do this?
I know this is a long explanation so if any clarification is needed, please let me know. Thanks for any help you may be able to provide.