Tutorial(4)
HTML
リソース[/WEB-INF/html/tutorial4.html]
<?xml version="1.0" encoding="UTF-8"?>

<html xmlns:java="http://hoeppe.the-ninja.jp/">
    <body>
        <div>Item List</div>
        <div java:canvas="list">

            <div java:group="fragment">
                <div>Item</div>
                <div java:key="index"></div>
                <div java:key="name"></div>
            </div>
        </div>
    </body>
</html>
Java
package org.ruler.markup.tutorial;

import org.ruler.markup.api.Canvas;
import org.ruler.markup.api.Group;
import org.ruler.markup.api.Http;
import org.ruler.markup.api.Mount;
import org.ruler.markup.api.Node;
import org.ruler.markup.api.Page;
import org.ruler.markup.api.Source;

@Mount(path="/tutorial4.html")
@Source(file="/WEB-INF/html/tutorial4.html")
public class Tutorial4 extends Page {

	//@Source(id="fragment") // if class field name is not same HTML id.
	@Source
	Group fragment = new Group();

	//@Source(id="list") // if class field name is not same HTML id.
	@Source
	Canvas list = (node) -> {
		String[] names = {
			"A", "B", "C", "D", "E"
		};

		int loop = 5;

		for(int i=0; i<loop; i++){
			Node copy = new Node(fragment);
			copy.in(node);

			Node name = copy.key("name");
			name.text(names[i]);

			Node index = copy.key("index");
			index.text("index("+i+")");
		}
	};

	@Override
	public void action(Http http) {
		http.GET = (e) -> {
			draw(e);
		};
	}
}

実行
出力[結果]
<?xml version="1.0" encoding="UTF-8"?>

<html>
	<body>
		<div>Item List</div>
		<div java:canvas="list">
			<div java:group="fragment">
				<div>Item</div>
				<div java:key="index">index(0)</div>
				<div java:key="name">A</div>
			</div>
			<div java:group="fragment">
				<div>Item</div>
				<div java:key="index">index(1)</div>
				<div java:key="name">B</div>
			</div>
			<div java:group="fragment">
				<div>Item</div>
				<div java:key="index">index(2)</div>
				<div java:key="name">C</div>
			</div>
			<div java:group="fragment">
				<div>Item</div>
				<div java:key="index">index(3)</div>
				<div java:key="name">D</div>
			</div>
			<div java:group="fragment">
				<div>Item</div>
				<div java:key="index">index(4)</div>
				<div java:key="name">E</div>
			</div>
		</div>
	<body>
</html>

説明
繰り返し処理を行うさいに、単位としての固まりをGroupクラスによって行います。
Groupクラスのフィールドに添付されたアノテーション@Source(id="xxx")と、
HTMLの属性(id)が一致するXML/HTMLタグがバインドされます。
new Node(Group group)によってコピーされたNodeインスタンスが生成されます。