雖然 FreeMarker/Velocity 不錯,但為了標準化、IDE 支援與團隊通用性,View 層選擇 JSP 2.0 + JSTL 作為基線,配合兩個利器極簡開發:
JSP 2.0 允許 EL 直接內嵌 HTML:
<p>${goods.name}</p>
<!-- 替代 -->
<p><c:out value="${goods.name}"/></p>
(註:EL 不能呼叫 getter 以外方法,符合「View 僅顯示資料」原則。)
Spring 內建 form tag 冗長且需逐欄綁定。jodd 提供整體綁定:
<form>
<jodd:form bean="human">
<input type="text" name="name">
<input type="radio" name="sex" value="man">
<select name="age">
<option value="20">20</option>
<option value="30">30</option>
</select>
</jodd:form>
</form>
所有同名輸入元件自動綁定到 bean 屬性。缺陷:不支援巢狀屬性 customer.customerNo,需修改其 BeanUtils 實現(可下載修正版)。
DisplayTag/ValueList 功能受限。Extreme Table 從設計之初即考慮擴充:
Buffalo, DWR, Scriptaculous, Prototype, AjaxTags, AjaxAnywhere, Rico, Dojo, JSON-RPC……工具太多,無銀彈。原則:團隊熟悉度優先,輕量級優先,避免為了「酷」引入重型依賴。
View 層簡化核心:標準化基線 + 兩把利刃 (jodd Form + Extreme Table) + 克制引入前端庫。讓 JSP 既保有標準優勢,又擁有現代框架級開發體驗。