ZUMLページであるには、Javaコードを埋め込めることができます。そして、以下のようにサーバーでそれらを実行します。
As being a ZUML page, it could embed any Java codes and execute them in the server as follows.
<html xmlns:zk="http://www.zkoss.org/2005/zk">
<head>
<title>ZHTML Demo</title>
</head>
<body>
<h1>ZHTML Demo</h1>
<ul id="ul">
<li>The first item.</li>
<li>The second item.</li>
</ul>
<input type="button" value="Add Item" zk:onClick="addItem()"/>
<br/>
<input id="inp0" type="text" zk:onChange="add()"/> +
<input id="inp1" type="text" zk:onChange="add()"/> =
<text id="out"/>
<zscript>
void addItem() {
Component li = new Raw("li");
li.setParent(ul);
new Text("Item "+ul.getChildren().size()).setParent(li);
}
void add(){
out.setValue(inp0.getValue() + inp1.getValue());
}
</zscript>
</body> </html>
上の例では、ZKネーム空間を使用してonClickプロパティを指定します。XHTML自身で同じ名前のプロパティを持つので、はっきり指定することは必要になります。
こ こで注意してほしいのは、すべてのJavaコードはサーバーで実行されます。HTMLページ中に埋め込むJavaScriptとは違って、直接サーバーの リソースにアクセスできます。例えば、データベースにコネクションを開いたり、コンポーネント中に入れるためのデータを取得したりします。
<zscript>
import java.sql.*;
void addItem() {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:Fred";
Connection conn = DriverManager.getConnection(url,"myLogin", "myPassword");
...
conn.close();
}
</zscript>