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; }
これで実装が全て終わりました。
もちろん、入力チェックなどしていないので、おかしなリンクが張られる可能性がある事はご了承下さい・・・
ようやく先が見えてきました。途中でダメかと思いましたが(笑)
次回は総仕上げをしたいと思います。