テストアプリへのULRフォームの追加/一覧画面でのURL表示/詳細画面でのURL表示

インターンの「基礎編:入力項目の追加をしてみよう」と「基礎編:追加した入力項目の表示をしてみよう」で、ULRフォームの追加/一覧画面でのURL表示/詳細画面でのURL表示に関して追加・修正した点をまとめました。

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


URLの入力フォームのフィールドネームを正しく表示するために、次のように修正した。
portlets/test/src/main/java/com/aimluck/eip/test/TestFormData.javaのinitField()のURL部分について

url.setFieldName(ALLocalizationUtils.getl10n("TODO_SETFIELDNAME_URL"));

と修正し、test-portlet/war/src/main/resources/com/aimluck/eip/modules/localization/AipoLocalization_ja.propertiesの#ToDoに

TODO_SETFIELDNAME_URL=URL

と追加した。


URL入力の際のバリデートについて、前回は

url.setCharacterType(3);

のように直接数字を指定していたが、このhacknoteを参考にして、

url.setCharacterType(ALStringField.TYPE_ASCII);

のように、ALStringFieldで定義された変数を利用して指定するように変更した。(課題文には半角英数字のみと書かれているが、URLの場合半角記号も受け付ける必要があるので、TYPE_ASCIIを選択した。)


詳細画面において、URLの表示欄を設けるために、 /test-portlet/portlets/test/src/main/webapp/WEB-INF/templates/vm/portlets/html/ajax-test-detail.vmに

#ALtdcaption($l10n.TODO_URL)
#ALtditem($!result.Detail.Url)

を追加した。

TODO_URLはpropertiesファイルに定義されていないので、test-portlet/war/src/main/resources/com/aimluck/eip/modules/localization/AipoLocalization_ja.propertiesの#ToDoに

TODO_URL=ULR

を追加した。


※注意点 VMファイルにおいてマクロを利用して追加する場合、メソッドの引数の調子で引数をカンマで区切ってしまわないようにする。

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


1.一覧画面でURLをリンク付きで表示できるようにする
/test-portlet/portlets/test/src/main/webapp/WEB-INF/templates/vm/portlets/html/ajax-test-list.vmが一覧画面の表示を担っている。 86行目に

<th>#ALajaxsort('test_name' $l10n.TODO_TITLE $result 'TestListScreen')</th>

とあるのが一覧画面にタイトルを表示させる処理であることがわかるので、URLについても同様に

<th>#ALajaxsort('url' $l10n.TODO_URL $result 'TestListScreen')</th>

と追加する。 さらにその下に

#ALtdcellheaderAtt('class="auiMTCaption"')
<div>
<a href="$record.Url"</a>
</div>
#ALtdcellfooter()

と追加する。 最後に、/test-portlet/portlets/test/src/main/java/com/aimluck/eip/modules/screens/TestSelectData.javaのgetResultData()に

rd.setUrl(ALCommonUtils.compressString(
        record.getUrl(),
        getStrLength()));

と追加することで、一覧画面のタイトルの右にURLが表示されるようになる。

こちらのhacknoteを参考にさせて頂きました。


2.詳細画面でのURLの表示
portlets/test/src/main/java/com/aimluck/eip/test/TestSelectData.javaファイル内に、詳細を表示した際にResultDataに値を格納して返すメソッドgetResultDataDetailがあり、そこに

rd.setUrl(record.getUrl());

と記述することで、詳細画面において、入力したURLが表示されるようになった。


全体を通した疑問点

$!result.Detail.Note

$l10n.TODO_URL

といった表記の実態はどこにあるのか。
こことかここが参考になりそう。
Javaのpropertiesファイルの利用方法についても不明点が多いので理解を深めたい。