Home Page - User Guide - API - Extras API - Demo and Code
Click is a web application framework. You may read the Java Web Programming Overview fist.
Click needs a servlet container such as Apache Tomcat.
To get the 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. More
We call our first project translator
and create a directory for it. This dir is our project root.
We roughly follow the Quick Start Guide and copy the most files from click-2.1.0/template/
into our project to ajust them for our needs.
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. 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. More
Copy click-2.1.0.jar and click-extras-2.1.0.jar into translator/WebContent/WEB-INF/WEB-INF/lib
Create your first java file in your java package path, eg translator/src/sb/translator/page/HomePage.java
Copy click-2.1.0/template/build.xml
into our project root and run ant
Project structure:
translator/ |-- WebContent | |-- WEB-INF | | |-- click.xml | | |-- lib | | | |-- click-2.1.0.jar | | | `-- click-extras-2.1.0.jar | | `-- web.xml | |-- home.htm | `-- redirect.html |-- build.xml `-- src `-- sb `-- translator `-- page `-- HomePage.java
Make a symlink from Tomcat to your project $CATALINA_HOME/webapps/translator
→ translator/WebContent
in order to get your page in the browser.
home.htm
is automatically mapped to the class Home.java
, or, if not found: HomePage.java
. Moreredirect.html
is used which results in the default URL (eg. home.htm
) and finally in the associated default class (HomePage.java
).home.htm
How to add the same default bordering HTML to each Page in order to get the same look for all pages?
BorderedPage
from Page
getTemplate()
so that always border-template.htm
is returned as Velocity template.border-template.htm
#parse($path)
to border-template.htm
. This will be replaced with the real template file.How to prevent caching without resart of Tomcat?
Why is @Bindable not recognized? Add more jar files?? Look in Template!
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: Page class overview, Autobinding
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()
As default, all public attributes of a Page class are added automatically to the Page's model
.
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
:
<pages package="sb.translator.page" autobinding="annotation"/>
Alle Java files must import Bindable:
import org.apache.click.util.Bindable;
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. More.
The data is also available in the velocity template, because it is automatically added to the page's model