詳細画面でのURLのドメインのみの表示・サムネイル表示

基礎編:追加した入力項目の表示をしてみよう

詳細画面での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で開く方法

  1. 前回作業していたローカルリポジトリの名称変更(変更前の名称をA、変更後の名称をBとする)
  2. 名称Aでリモートリポジトリから新しいブランチを生成
  3. 名称Bのローカルリポジトリを削除する  

理想はAにローカルリポジトリをpullしたいんだけどやり方がわからない・・・