(修正)Hiccup を JSP 対応させてみたのでメモ
前の記事「Hiccup を JSP 対応させてみたのでメモ - oknknicの日記」はあまりにもあんまり過ぎたので書き直し。
改変内容
Hiccupバージョン:1.0.3
対象ファイル:hiccup/compiler.clj
置き換え対象関数:render-element
(defn- render-element "Render an element vector as a HTML element." [element] (let [[tag attrs content] (normalize-element element)] (if (or content (container-tags tag)) (if (.startsWith tag "%") ;Add for JSP(%) (str "<" tag " " (render-html content) " %>") ;Add for JSP(%) (str "<" tag (render-attr-map attrs) ">" (render-html content) "</" tag ">")) (str "<" tag (render-attr-map attrs) (end-tag)))))
ビルド
lein jar
利用例
(use :reload 'hiccup.core) (html [:%= "hoge"]) ; -> "<%= hoge %>" (html ["%@" "page contentType=\"text/html;charset=Shift_JIS\""]) ; -> "<%@ page contentType=\"text/html;charset=Shift_JIS\" %>" (html [:jsp:forward {:page "hoge.jsp"}]) ; -> "<jsp:forward page=\"hoge.jsp\" />" (html [:jsp:forward {:page "hoge.jsp"} [:jsp:param {:name "param1" :value "hoge"}]]) ; -> "<jsp:forward page=\"hoge.jsp\"><jsp:param name=\"param1\" value=\"hoge\" /></jsp:forward>" (html [:c:forEach {:var "i" :begin "0" :end "5" :step "1"} [:c:out {:value "${i}"}]]) ; -> "<c:forEach begin=\"0\" end=\"5\" step=\"1\" var=\"i\"><c:out value=\"${i}\" /></c:forEach>"