MessageComponentを修正する(URL、メールのリンクを表示する)

あと、もう一つ、MessageComponentでやり残した事があります。それはURLとメールのリンクを表示する事です。
現在はダミーで画像アイコンを表示させています。
外部リンクはTapestryに標準のGenericLinkコンポーネントを使用する事にします。
URLやメールが入力されていなかった場合は、画像アイコン自体表示しない事にしたいので、またもやConditinalに登場していただきましょう。

MessageComponent.html(抜粋)

<span jwcid="mailConditional">
	<span jwcid="mailLink"><img src="images/mail.gif"/></span>
</span>
<span jwcid="urlConditional">
	<span jwcid="urlLink"><img src="images/home.gif"/></span>
</span>

MessageComponent.jwc(抜粋)

<component id="mailConditional" type="Conditional">
	<binding name="condition" expression="mailVisible"/>
</component>
<component id="mailLink" type="GenericLink">
	<binding name="href" expression="message.mailLink"/>
</component>
<component id="urlConditional" type="Conditional">
	<binding name="condition" expression="urlVisible"/>
</component>
<component id="urlLink" type="GenericLink">
	<binding name="href" expression="message.url"/>
</component>

MessageComponent.java(抜粋)

public boolean isMailVisible() {
	String mail = getMessage().getMail();
	if (mail == null || mail.length() == 0) {
		return false;
	}
	return true;
}

public boolean isUrlVisible() {
	String url = getMessage().getUrl();
	if (url == null || url.length() == 0) {
		return false;
	}
	return true;
}

MessageComponent.jwcのmailLinkに注目して下さい。
メールへのリンクを張る時は、メールアドレスのアタマに"mailto:"をつけなければなりません。
それを行うメソッドをMessageオブジェクトにgetterとして実装し、.jwcではmessage.mailLinkとして呼び出す事にします。

Message.java(抜粋)

public String getMailLink() {
	if (getMail() != null || getMail().length() != 0) {
		return "mailto:" + getMail();
	}
	return null;
}

これで実装が全て終わりました。
もちろん、入力チェックなどしていないので、おかしなリンクが張られる可能性がある事はご了承下さい・・・


ようやく先が見えてきました。途中でダメかと思いましたが(笑)
次回は総仕上げをしたいと思います。