Initial commit
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# State Management
|
||||
|
||||
> State conventions for server-rendered JSP pages.
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This project does not use React/Vue state libraries or SPA stores. State should
|
||||
flow through the Servlet/JSP request cycle unless a future explicit decision
|
||||
changes the frontend architecture.
|
||||
|
||||
---
|
||||
|
||||
## State Categories
|
||||
|
||||
- Request attributes: page data, validation errors, form echoes, table rows,
|
||||
reports, and short result messages for a single render.
|
||||
- Session attributes: authenticated user identity, role, permission summary,
|
||||
and short-lived flash-style messages when redirects are used.
|
||||
- Database state: books, categories, readers, borrowing records,
|
||||
administrators, permissions, and logs stored in MySQL through services/DAOs.
|
||||
- Form state: submitted by browser forms to Servlets and re-rendered from
|
||||
validated request attributes on failure.
|
||||
|
||||
---
|
||||
|
||||
## Rules
|
||||
|
||||
- Keep business state in MySQL, not hidden fields or long-lived browser state.
|
||||
- Keep permission decisions server-side.
|
||||
- Use redirects after successful mutations such as create/update/delete,
|
||||
borrow, return, renew, and permission changes.
|
||||
- Do not add Redux, Pinia, client caches, or SPA routing state unless the
|
||||
developer explicitly introduces that stack later.
|
||||
|
||||
---
|
||||
|
||||
## Page Scripts
|
||||
|
||||
Small JavaScript can improve interaction, such as confirm dialogs or local form
|
||||
helpers, but server-side validation and service-layer rules remain mandatory.
|
||||
Reference in New Issue
Block a user