<%clojure ; ; Defer this page ; (if (= (.. conversation getQuery (get "defer")) "true") (if (.defer conversation) (.stop conversation))) ; ; Cache this page ; (.setCacheDuration document 5000) ; ; Calling Java ; (print "

This page was dynamically generated at " (System/currentTimeMillis) "

") ; ; An example of a function ; (defn print-adapter [adapter] (let [attributes (.getAttributes adapter)] %>

Engine: <%= (get attributes "name") %> version <%= (get attributes "version") %>
Language: <%= (get attributes "language.name") %> version <%= (get attributes "language.version") %>
Tags: <% (def tags (get attributes "tags")) (doseq [tag (butlast tags)] (print tag) (print ", ")) (print (last tags)) %>

<% )) %>

Language used:

<% (print-adapter (.. executable getContext getAdapter)) %>

Available languages:

<% (def adapters (.. executable getManager getAdapters)) (doseq [adapter adapters] (print-adapter adapter)) %>

The "id" attribute in the URL query is:

<%= (or (.. conversation getQuery (get "id")) "") %>

A few tests:

<% ; ; Including a document ; ; This is identical to: ; ; (.include document "/triple/clojure/") ; %> <%& "/triple/clojure/" %> <% (doseq [i (range 10)] %> A multiple of three: <% (print-triple i) %>
<% ) %>