Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
becki:linux:apache_click [2010-04-30 14:22] becki created |
becki:linux:apache_click [2010-05-05 13:24] (aktuell) becki |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Apache Click == | ====== Apache Click == | ||
+ | ===== Useful Links == | ||
+ | |||
+ | [[http://click.apache.org/|Home Page]] - [[http://click.apache.org/docs/user-guide/html/|User Guide]] - [[http://click.apache.org/docs/click-api/|API]] - [[http://click.apache.org/docs/extras-api/|Extras API]] - [[http://www.avoka.com/click-examples/|Demo and Code]] | ||
+ | |||
===== General == | ===== General == | ||
Zeile 6: | Zeile 10: | ||
Click needs a servlet container such as [[:becki:linux:Apache Tomcat]]. | Click needs a servlet container such as [[:becki:linux:Apache Tomcat]]. | ||
- | To get the [[http://www.avoka.com/click-examples/home.htm|Click examples]] served from your own tomcat server, just copy ''click-2.1.0/dist/click-examples.war'' into ''CATALINA_HOME/webapps'' and point your browser to http://localhost:8080/click-examples :-) Note that Tomcat extracts the .war file into the webapps dir and serves content from the extracted directory and not from the war file. [[http://tomcat.apache.org/tomcat-6.0-doc/appdev/deployment.html#Deployment%20With%20Tomcat%206|More]] | + | To get the [[http://www.avoka.com/click-examples/home.htm|Click examples]] served from your own tomcat server, just copy ''click-2.1.0/dist/click-examples.war'' into ''$CATALINA_HOME/webapps'' and point your browser to http://localhost:8080/click-examples :-) Note that Tomcat extracts the .war file into the webapps dir and serves content from the extracted directory and not from the war file. [[http://tomcat.apache.org/tomcat-6.0-doc/appdev/deployment.html#Deployment%20With%20Tomcat%206|More]] |
===== First Steps == | ===== First Steps == | ||
Zeile 14: | Zeile 18: | ||
We roughly follow the [[http://click.apache.org/docs/quick-start.html|Quick Start Guide]] and copy the most files from ''click-2.1.0/template/'' into our project to ajust them for our needs. | We roughly follow the [[http://click.apache.org/docs/quick-start.html|Quick Start Guide]] and copy the most files from ''click-2.1.0/template/'' into our project to ajust them for our needs. | ||
- | Copy ''click-2.1.0/template/WebContent/WEB-INF/click.xml'' from the Click distribution to ''translator/WebContent/WEB-INF/click.xml''. Specify among others your Java package name, eg. ''sb.translator.page'' and optionally the charset, the locale, the logging and caching mode in the application configuration file . [[http://click.apache.org/docs/user-guide/html/ch04s02.html|More]] | + | //Application configuration//: Copy ''click-2.1.0/template/WebContent/WEB-INF/click.xml'' from the Click distribution to ''translator/WebContent/WEB-INF/click.xml''. Specify among others your Java package name, eg. ''sb.translator.page'' and optionally the charset, the locale, the logging / caching mode and autobinding of controls in the application configuration file. [[http://click.apache.org/docs/user-guide/html/ch04s02.html|More]] |
- | Copy & paste the servlet configuration file ''translator/WebContent/WEB-INF/web.xml'' directly from the quick start guide. This file is for specifying the location of the ClickServlet and the servlet is mapped to process all *.htm URL requests. [[http://click.apache.org/docs/user-guide/html/ch04.html#servlet-configuration|More]] | + | //Servlet configuration//: Copy & paste the servlet configuration file ''translator/WebContent/WEB-INF/web.xml'' directly from the quick start guide. This file is for specifying the location of the ClickServlet and the servlet is mapped to process all *.htm URL requests. [[http://click.apache.org/docs/user-guide/html/ch04.html#servlet-configuration|More]] |
Copy click-2.1.0.jar and click-extras-2.1.0.jar into ''translator/WebContent/WEB-INF/WEB-INF/lib'' | Copy click-2.1.0.jar and click-extras-2.1.0.jar into ''translator/WebContent/WEB-INF/WEB-INF/lib'' | ||
Zeile 44: | Zeile 48: | ||
</code> | </code> | ||
- | Symlink FIXME from tomcat to FIXME | + | Make a symlink from Tomcat to your project ''$CATALINA_HOME/webapps/translator'' -> ''translator/WebContent'' in order to get your page in the browser. |
+ | |||
+ | ===== Template ⇔ Class mapping == | ||
+ | |||
+ | - The URL request to eg ''home.htm'' is automatically mapped to the class ''Home.java'', or, if not found: ''HomePage.java''. [[http://click.apache.org/docs/user-guide/html/ch04s02.html#application-automapping|More]] | ||
+ | - If no associated class can be found, ''redirect.html'' is used which results in the default URL (eg. ''home.htm'') and finally in the associated default class (''HomePage.java''). | ||
+ | - The associated Velocity template for the class is specified by the requested file in the URL, eg. ''home.htm'' | ||
+ | - The associated Velocity template may by modified by the class by overwriting the [[ http://click.apache.org/docs/click-api/org/apache/click/Page.html#getTemplate%28%29|getTemplate]] method of the Page class. | ||
+ | |||
+ | ===== Border Page Template == | ||
+ | |||
+ | How to add the same default bordering HTML to each Page in order to get the same look for all pages? | ||
+ | |||
+ | - Extend a Page class ''BorderedPage'' from ''Page'' | ||
+ | - Overwrite ''getTemplate()'' so that always ''border-template.htm'' is returned as Velocity template. | ||
+ | - Create your bordering HTML in ''border-template.htm'' | ||
+ | - Add the Velocity directive ''#parse($path)'' to ''border-template.htm''. This will be replaced with the real template file. | ||
+ | - Extend all your Page classes from BorderedPage, not from Page | ||
+ | |||
+ | [[http://click.apache.org/docs/quick-start.html#border|More]] | ||
+ | |||
+ | FIXME How to prevent caching without resart of Tomcat? | ||
+ | |||
+ | FIXME Why is @Bindable not recognized? Add more jar files?? Look in Template! | ||
+ | |||
+ | ===== Template ⇔ Class Binding == | ||
+ | |||
+ | FIXME Verify this paragraph! | ||
+ | |||
+ | Java classes can be accessed by the Velocity templates by adding them to the ''model'' Map of the Page class. Adding can be done explicitely (by calling a method), implizitely (by making them public) or by using an annotation. More: [[http://click.apache.org/docs/user-guide/html/ch02.html#classes|Page class overview]], [[http://click.apache.org/docs/user-guide/html/ch04s02.html#application-autobinding|Autobinding]] | ||
+ | |||
+ | ==== Manual adding == | ||
+ | |||
+ | Distinguish between plain dynamic data types like ''String'' or ''Date'' and Click Control types like ''Checkbox'' or ''FormTable''. | ||
+ | |||
+ | Plain data types are made available for the Velocity template by calling ''Page.addModel()'' in the constructor of the Page class or in ''Page.onInit()''. | ||
+ | |||
+ | Click Control types must be added with ''Page.addControl()'' in ''Page.onInit()'' | ||
+ | |||
+ | ==== Automatic adding == | ||
+ | |||
+ | As default, all public attributes of a Page class are added automatically to the Page's ''model''. | ||
+ | |||
+ | ==== Adding by annotation == | ||
+ | |||
+ | Alle attributes of a Page, annotated with ''@Bindable'' are added automatically to the Page's ''model''. | ||
+ | |||
+ | The @Bindable annotation is only respected, when autobinding ist set to ''annotation'' in ''click.xml'': | ||
+ | <code xml> | ||
+ | <pages package="sb.translator.page" autobinding="annotation"/> | ||
+ | </code> | ||
+ | |||
+ | Alle Java files must import Bindable: | ||
+ | <code java> | ||
+ | import org.apache.click.util.Bindable; | ||
+ | </code> | ||
+ | |||
+ | <note tip>Using the @Bindable annotation seems to be the best way of binding :?:</note> | ||
+ | |||
+ | ===== Request Parameter Binding == | ||
+ | |||
+ | Parameter data, which is sent with HTTP Get (or Post?) can be made available in the page class just by creating a public attribute with the same name. [[http://click.apache.org/docs/user-guide/html/ch02s03.html|More]]. | ||
+ | |||
+ | The data is also available in the velocity template, because it is automatically added to the [[http://click.apache.org/docs/click-api/org/apache/click/Page.html#model|page's model]] | ||