在ASP.NET裏,User control使頁面的模板化成爲一種新的設計思路,這兩天關心了一下JSP,不過好象還沒有現成的技術說法,但間接的實現也可以的,看下面的例子。
目錄結構:
/
--/template
--/default
--/blue
--/...
網頁裏:
... ...
String template = user.get("template");
template = ((template.length()==0) ? "default":template);
out.flush();
request.getRequestDispatcher("/WEB-INF/template/" + template + "/post.jsp").include(request, response);
... ...
這個用法看起來好象和包含另一個網頁差不多,JSP裏兩種重要的包含方法:
〈%@ include file="/WEB-INF/template/StatusCheck.jsp" %〉
〈jsp:include page="WEB-INF/inc/meta.jsp"〉
〈jsp:param name="title" value="FAQ update"〉〈/jsp:param〉
〈/jsp:include〉
但仔細分析就會發現,這種模板的方式其實是一種動態的包含。一般常用的兩種包含方法都是靜態的,多數場合是夠用了,但有一些情況就比較困難。想前面的例子,要針對不同的用戶模板包含不同的實現,靜態的包含方法就很困難了。
P.S. 輸入的時候感覺這裏的編輯器有點問題,把我所有的尖括號都自動轉換成了HTML代碼,即使我輸入 & lt ; & gt ; 也不行。這樣一來,那些例子就跑到背後去了。最後只好用全角了事。不僅這樣,還加了些什麼XML之類的東西。懊喪之極 :-(