Skip to content

Split View

Status: ✅ Implemented — @SplitCrud

Work on a collection without ever leaving it.

The list → detail → back flow forces users to lose their position in the list, their active filters, and their scroll position on every round trip. Reviewing forty orders pays that cost forty times. This is the root cause of the CRUD Tunnel anti-pattern.

Annotate the CrudOrchestrator with @SplitCrud. The framework renders the list on the left and the detail on the right, in a master-detail split layout. Selecting a row loads the detail panel in place instead of navigating to a new route.

@UI("/orders")
@SplitCrud
public class OrdersCrud extends AutoCrudOrchestrator<Order> {
// nothing else needed
}

The URL still updates (/orders/42, /orders/new) so deep linking and browser history work correctly.

┌─────────────────────┬──────────────────────────┐
│ Filters │ │
│ ───────────────── │ Detail / form │
│ Row 1 │ │
│ Row 2 ◀ selected │ Field A ___________ │
│ Row 3 │ Field B ___________ │
│ ... │ │
│ │ [Save] [Delete] │
└─────────────────────┴──────────────────────────┘

The split layout wires up these actions automatically:

ActionDescription
viewOpens selected row in detail panel
newOpens creation form in detail panel
editSwitches detail panel to edit mode
save / createSaves changes, stays in layout
cancel-view / cancel-new / cancel-editCloses detail panel, returns to list
delete-editDeletes from within the detail panel
  • Preserve context — the list stays visible and interactive
  • Minimize navigation — zero page transitions for the common case