テンプレートを利用する
今回は、
Apahe ClickではApache Velocityによるテンプレート・
<html>
<head>
<title>Apache Click Sample - $title</title>
</head>
<body>
<div id="header" style="background-color: #333333">
<h1 style="color: white">$title</h1>
</div>
<div id="contents" style="padding: 1em 0.5em 1.5em">
#parse($path)
</div>
<hr style="color: #333333" />
<div align="right" style="color: #666666">$copyright</div>
</body>
</html>
テンプレート内でも、
my-template.
package jp.gihyo.toolbox.click;
import org.apache.click.Page;
public class MyTemplate extends Page {
@Override
public String getTemplate() {
return "/my-template.htm";
}
}
続いて、
package jp.gihyo.toolbox.click;
public class SecondPage extends MyTemplate {
public String title = "テンプレートの使用";
public String copyright = "(C) 2011 杉山貴章";
}
クラス名が
<p>Apache Clickでテンプレートを使用した例です。</p>
できたら、

コントロールを使用して入力値を渡す
続いて、
package jp.gihyo.toolbox.click;
import org.apache.click.control.Form;
public class LoginPage extends MyTemplate {
// テンプレート用
public String title = "ログイン";
public String copyright = "(C) 2011 杉山貴章";
// 入力フォーム
public Form loginForm = new Form();
private TextField nameField = new TextField("username", "ユーザ名", true);
public LoginPage() {
// 入力フォームを構成
this.loginForm.add(this.nameField);
this.loginForm.add(new PasswordField("password", "パスワード", true));
this.loginForm.add(new Submit("login", "ログイン", this, "onLoginClick"));
addModel("loginform", this.loginForm);
}
public boolean onLoginClick() {
if (loginForm.isValid()) {
// ......ログイン認証処理......
// welcome-page.htmへユーザ名を渡す
WelcomePage welcomePage = (WelcomePage)getContext().createPage("/welcome-page.htm");
welcomePage.setUsername(this.nameField.getValue());
setForward(welcomePage);
}
return true;
}
}
Apache Clickには、
TextFieldとPasswordFieldでは、
onLoginClick()メソッドでは、
LoginPageクラスに対応するhtmlファイルは、
<p>ユーザ名とパスワードを入力してログインしてください。</p>
$loginform
$loginformは、
最後に、
package jp.gihyo.toolbox.click;
public class WelcomePage extends MyTemplate {
// テンプレート用
public String title = "ようこそ";
public String copyright = "(C) 2011 杉山貴章";
// ユーザ名
private String username;
@Override
public void onInit() {
super.onInit();
if (this.username != null) {
addModel("username", this.username);
}
}
public void setUsername(String username) {
this.username = username;
}
}
onInit()はPageインスタンスの初期化のために実行されるメソッドです。WelcomePageではこれをオーバーライドして、
WelcomePageに対応するhtmlファイルはwelcome-page.
<p>ようこそ <strong>$username</strong> さん。</p>
完成したら、


このように、