MessageListComponentを実装する

このコンポーネントには、親メッセージのリストをもつ必要があります。
また、MessageWitchChildrenComponentをループする必要があるために、リスト一つ一つのオブジェクトを保持するプロパティも必要になります。

MessageListComponent.jwc

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE component-specification PUBLIC
  "-//Apache Software Foundation//Tapestry Specification 3.0//EN"
  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">

<component-specification class="bbs.view.MessageListComponent"
    allow-body="no"
    allow-informal-parameters="no">
    
	<parameter name="parentMessageList" type="java.util.List" direction="in" required="yes"/>
	<property-specification name="parentMessage" type="bbs.data.Message" persistent="no"/>
    
	<component id="parentLoop" type="Foreach">
		<binding name="source" expression="parentMessageList"/>
		<binding name="value" expression="parentMessage"/>
	</component>
	
	<component id="messageWithChildrenComponent" type="MessageWithChildrenComponent">
		<binding name="parentMessage" expression="parentMessage"/>
	</component>
</component-specification>

まだMessageWithChildrenComponentは作成していませんが、上記のようにバインドする事を想定しておきます。

MessageListComponent.html

<span jwcid="parentLoop">
	<span jwcid="messageWithChildrenComponent"/>
	<br/><br/>
</span>

HTMLはこのように非常に単純なものです。MessageWithChildrenComponentを繰り返し表示しているだけです。

MessageListComponent.java

package bbs.view;

import java.util.List;

import org.apache.tapestry.BaseComponent;

import bbs.data.Message;

/**
 * メッセージ一覧表示コンポーネント
 * 
 * @author toolkit
 * @version $Revision$
 */
public abstract class MessageListComponent extends BaseComponent {
	public abstract List getParentMessageList();
	public abstract void setParentMessageList(List parentMessageList);
	public abstract Message getParentMessage();
	public abstract void setParentMessage(Message parentMessage);
}

Javaクラスもこのように、アクセッサをabstractで持たせるだけで十分です。