前回に引き続き、URL入力フォームとURLの一覧表示の実装を行った。 URL入力フォームでは、 portlets/test/src/main/webapp/WEB-INF/templates/vm/portlets/html/ja/ajax-test-form.vm へ、マクロを記述することでURLの入力フォームを実装することができた。記述したマクロは下記の通り。
+#ALtdcaption($!result.getFieldName("url")) +#ALtditem("#ALtextfieldw100('url' $!result.Url 50 'active')")
その際、portlets/test/src/main/java/com/aimluck/eip/test/TestFormData.javaファイル内には、 ・入力された値をデータベースに格納する ・入力された値をデータベースから取得する 等のバックグラウンド的な処理が記述されているのだが、URLを取得する処理において、 引数名を他の箇所と一部異なる書き方をしてしまい、取得した値を本来入れたい引数に格納できないという問題があった。 結果、本来入力したURLが表示されるはずの箇所にソースコードそのものが表示されてしまうというバグが発生した。 引数名や変数名等に関しては正しく記述できているか十分確認したい。
入力されたURLを一覧画面に表示する処理は、 portlets/test/src/main/webapp/WEB-INF/templates/vm/portlets/html/ajax-test-detial.vm へURL用に新たなマクロを記述することで実装できた。 記述したマクロは下記の通り。
+#ALtdcaption($l10n.TEST_URL) +#ALtditem($!result.Detail.Url)
しかしこれまでの処理でresultやDetialといったメソッドは定義しておらず、アプリケーションの実行をしてみたところ、やはり正しくURLが取得できておらず$!result.Detail.Urlというソースコードがそのまま表示されていた。 原因を探るため、ファイルをざっと眺めたところDetailとつくファイルがいくつか存在したので中身を確認してみたところ、こちらに詳細画面に値を返すような処理を書く必要がありそうだった。 portlets/test/src/main/java/com/aimluck/eip/test/TestResultData.javaには下記コードを記述。
+ /** URL */ + private ALStringField url; + + url = new ALStringField(); + url.setTrim(false); + public String getUrl() { + return ALEipUtils.getMessageList(url.getValue()); + } + + /** + * @param string + */ + public void setUrl(String string) { + url.setValue(string); + } + + + /** + * @return + */
再びアプリケーションの実行を行ったところ、先ほどのようなソースコードが表示されることはなくなったものの、今度は何も表示されなくなってしまった。少し調べるとportlets/test/src/main/java/com/aimluck/eip/test/TestSelectData.javaファイル内にResultDataに値を格納し、返すための処理が書かれていたのでそちらにも下記コードを記述し、動作を確認したところ、ちゃんとURLがリンク付きで表示されるようになった。
+ rd.setUrl(record.getUrl());
基礎編の課題としてはあとはサムネイルを一覧画面に表示させるだけなので次回実装を行い、実践的なプログラムにチャレンジしたいと思う。