Ruby/Python 等動態語言以「草書」般自由著稱;Java 如「正楷」規範嚴格。大型企業級應用需要規範帶來的可維護性、擴展性與團隊協作效率。EasyJWeb 目標是在 Java 平台上引入「適度動態特性」,保留靜態優勢的同時提升開發靈活度。
傳統 Struts 強制固定簽名:
public ActionForward execute(ActionMapping m, ActionForm f,
HttpServletRequest req, HttpServletResponse res) { ... }
EasyJWeb `AbstractCmdAction` 允許以下任意組合:
public Page doCreate(WebForm form, Module module)
public Page doCreate(WebForm form)
public Page doCreate(Module module)
public Page doCreate()
public void doCreate(WebForm form, Module module)
public void doCreate(WebForm form)
public void doCreate(Module module)
public void doCreate()
// 甚至方法名可省略 do 前綴
public Page create(WebForm form, Module module) ...
調用方式靈活:`xxx.ejf?easyJWebCommand=create`、`xxx.ejf?cmd=create`、REST 風格 `/ejf/xxx/create`。便於單元測試 (無需容器) 與代碼閱讀。
以註解聲明驗證規則,參數採鍵值對自然語法:
@FormPO(name="person", validators={
@Validator(name="required", field="name,sex,height,birthDate"),
@Validator(name="range", field="birthDate",
value="min:1908-01-01;max:2008-01-01;min_msg:出生日期不能早於1908年;max_msg:出生日期不能晚於2008年")
})
public class Person { ... }
「動」有動的敏捷,「靜」有靜的穩健。EasyJWeb 不追求全動態化,而是在「規範骨架」上開放「業務肉體」的彈性空間。這正是 Java 生態從 JSF、Spring、Groovy 等框架演進的共同方向。