Page Action

Dateien mit der Endung .page enthalten Actions, die HTML erzeugen. Sie können durch eine URL unter ihrem Dateinamen aufgerufen werden.


<action>
<function>
(lambda (request)
  (html-from-template "/index.html" nil))
</function>
</action>

Beispiel 1: die Page-Action index.page


Aufrufen einer Action bedeutet immer, dass die Action-Funktion (eingeschlossen in die function-Tags) mit einer Liste von Name-Wert-Paaren aktiviert wird. Die Liste enthält die Argumente aus dem HTTP-Request.

Von der Action-Funktion wird erwartet, dass sie eine HTML-Seite als Ergebnis liefert. Am einfachsten lässt sich das mit der Framework-Funktion html-from-template erreichen. Diese Framework-Funktion erwartet den Pfad zu einem HTML-Template relativ zum Template-Verzeichnis des Frameworks und eine Liste von Name-Wert-Paaren. Mit der Liste können die im Template vorzunehmenden Ersetzungen festgelegt werden. Im Beispiel 1 wird also einfach der Inhalt des Templates index.html ohne weitere Ersetzungen an den Browser übermittelt.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Hello</title>
<script type="text/javascript" src="/dojo-release-1.1.0/dojo/dojo.js"></script>
</head>
<body>
<div id="content">
<div id="message">Please enter your name.</div>
<form id="form-1">
Firstname<br />
<input type="text" name="firstname" /><br />
Lastname<br />
<input type="text" name="lastname" /><br/>
<br />
<a href="javascript:void dojo.xhrPost({preventCache:true, form:dojo.byId(&quot;form-1&quot;), url:&quot;/submit.script&quot;, encoding:&quot;UTF-8&quot;, handleAs:&quot;javascript&quot;})">Click here!</a>
</form>
</div>
</body>
</html>

Beispiel 2: das Template index.html


Wenn das Template aus Beispiel 2 als HTML-Seite im Browser angezeigt wird, dann kann der Nutzer seinen Vor- und Nachnamen eingeben. Der Klick auf den Aktionslink "Click here!" ruft die Funktion dojo.xhrPost aus dem dojo Toolkit auf. Diese Funktion packt die Werte aus dem Formular mit Vor- und Nachnamen zu einem asynchronen HTTP-Request zusammen und sendet ihn an den Server. Dort wird der Request durch eine Script Action verarbeitet. Bei der Response der Script Action handelt es sich um JavaScript, das von dojo.xhrPost ausgeführt wird, sobald es beim Browser eintrifft.