基礎編:追加した入力項目の表示をしてみよう
詳細画面でのURLのドメインのみの表示
/test-portlet/portlets/test/src/main/java/com/aimluck/eip/test/TestResultData.javaに次のメソッドを追加する。
public String getUrlDomain() throws Exception{ if(url.getURLEncodedValue().equals("")){ return ""; } else{ URI u = new URI(url.getValue()); return u.getScheme()+"://"+u.getHost(); } }
メソッドについて説明する。
ALStringField型の変数であるurlに対して、メソッドgetURLEncodedValue()(URLのエンコード用メソッド、valueがnullなら空文字を返す)を呼び、戻り値が空文字であれば、つまりURLの入力が無ければ空文字を返す。
戻り値があれば、つまりURLの入力があれば、URIクラスを用いてドメインのみのURLの文字列を生成し、その文字列を返す。
URLクラスの使用法については以下のページを参照した。
URLを表す文字列を指定してURLオブジェクトを作成する
URIクラスで出来る3つの操作 – こせきの技術日記
その後、/test-portlet/portlets/test/src/main/webapp/WEB-INF/templates/vm/portlets/html/ajax-test-detail.vmのURL表示を担う部分を
#ALtditem($!result.Detail.UrlDomain)
とすることで、入力されたURLのドメインのみを取得し表示させるようにした。
なお、URLにスペースが入力されると、詳細画面のURL欄には「$!result.Detail.UrlDomain」と表示されてしまう。
岩崎さんにアドバイスを頂いてスペース入力の場合に対応できるように修正した。
スペースが入力された場合、例外処理になりスローしてしまっているようなので、try~catchで例外の場合も空文字を返すようにした。
public String getUrlDomain(){ if(url.getURLEncodedValue().equals("")){ return ""; } else{ try { URI u = new URI(url.getValue()); return u.getScheme() + "://" + u.getHost(); } catch (URISyntaxException e) { return ""; } } }
こういう書き方もあるんだな〜と思いました。 try~catchをベストプラクティスで使えるようになりたい・・・
詳細画面でのURLのサムネイルの表示
/test-portlet/portlets/test/src/main/webapp/WEB-INF/templates/vm/portlets/html/ajax-test-detail.vmに以下を追加する。
#ALtdcaption($l10n.TODO_THUMBNAIL) #ALtditemheader() <a href = "$!result.Detail.UrlOriginal"><img title="$!result.Detail.UrlOriginal" src="http://capture.heartrails.com/free?$!result.Detail.UrlOriginal" alt="$!result.Detail.UrlOriginl" width="200" height="200" /><a> #ALtditemfooter()
また、/test-portlet/war/src/main/resources/com/aimluck/eip/modules/localization/AipoLocalization_ja.propertiesのTODOに
TODO_THUMBNAIL=サムネイル
と追加する。
サムネイルの表示についてはHTMLのタグとHeartRails CaptureのAPIの使用方法を参考。
メモ:リモートリポジトリのブランチをEclipseで開く方法
- 前回作業していたローカルリポジトリの名称変更(変更前の名称をA、変更後の名称をBとする)
- 名称Aでリモートリポジトリから新しいブランチを生成
- 名称Bのローカルリポジトリを削除する
理想はAにローカルリポジトリをpullしたいんだけどやり方がわからない・・・