トラブルであまり作業が進まなかったが、無事に基礎編を終え、実践編に入ることが出来た。
前回のドメイン表示の続き。
https://hacknote.jp/archives/15161/
<URLクラスを使いこなす> http://www.javadrive.jp/tutorial/url/index2.html
基礎編最後の課題である、URLのドメインのみ表示を確認した。
詳細画面の処理なので、TestResultData.javaに書き込んでいく
とりあえずサイトに書いてあるように、
import java.net.URL;
をインポート。 また、URLクラスを利用した、 URL(String spec)でURLをString表現から生成できる。
public String getUrlDomain() throws MalformedURLException { URL u = new URL(url.getValue()); return u.getProtocol() + "://" + u.getHost(); }
throws MalformedURLExceptionは例外を弾く処理らしい。 throws MalformedURLException と throws Exception の違いや詳細は
http://www.atmarkit.co.jp/ait/articles/0611/22/news144.html
今回は、サイトに書いてあるようにthrows MalformedURLExceptionを使用した。
しかしその場合、java.net.URLの他に、java.net.MalformedURLExceptionもimportする必要があるようだ。
import java.net.URL; import java.net.MalformedURLException;
これでドメインのみ文字列を取得できるので、後はDetailの表示を対応させる。
ajax-test-detail.vmの
<a href="$!result.Detail.Url">$!result.Detail.Url</a>
を
<a href="$!result.Detail.Url">$!result.Detail.UrlDomain</a>
とすることで、getUrlDomain()で得たドメインのみ文字列を、リンクを維持したまま表示できる。 URLくらすとは別に、URIクラスを用いたHackもあり混乱したが、本質的には同じで、最初のドメインがProtocolとSchemeの違いくらいだが、その場合は
import java.net.URL;
をインポートする必要がある。 詳しくは、 http://koseki.hatenablog.com/entry/20070404/javauri
最後に、このままだとサムネイルからリンクを飛ばせなかったので、
<URLクラスを使いこなす> http://www.javadrive.jp/tutorial/url/index2.html を参考にして、
ajax-test-detail.vmのサムネイルを表示している箇所
#ALtdcaption($l10n.TODO_SETFIELDNAME_THUMNAIL) #ALtditemheader() -<img src="http://capture.heartrails.com/?$!result.Detail.Url"> #ALtditemfooter()
を
#ALtdcaption($l10n.TODO_SETFIELDNAME_THUMNAIL) #ALtditemheader() +<a href="$!result.Detail.Url"> +<img src="http://capture.heartrails.com/?$!result.Detail.Url"></a> #ALtditemfooter()
に変更した。 これで基礎編終了! 時間がかかったがすごく勉強になりました。