今日はインターンシップの初日でした。 やったことは、テストポートレットの機能の一部としてのURL入力欄の作成です。
今日の作業の流れを以下の①〜④に示します。 ①サンプルの機能を持ったAipoにブラウザ(Chrome)でアクセスして、右クリック「要素の検証」をつかって各機能に関係するファイルを調べた。 ②対応するファイルの中身のうち、構造が近い「メモ」欄などを見ながら、コードの機能を調べた。 ③自分だけではよくわからない部分をアルバイトの方に教えてもらいながら、機能の実装を行った。 ④ビルドして実現できていることをブラウザで確認した。
また、実際の細かい流れを以下で説明します。 最初にブラウザで要素の検証を行ったところ、TestFormScreenというファイルを利用していることが分かりました。
そのファイルを開いたところ、
String layout_template = "portlets/html/ja/ajax-test-form.vm";
という記述があったので、さらに内部でportlets/html/ja/ajax-test-form.vmというhtmlを利用したファイルにアクセスしていることが分かりました。このファイルでは、htmlをVelocityというテンプレートエンジンを使って表現しているとのことでしたので、処理の中では文字の配置などを規定しているものだと考え、表示する文字の内容を扱うファイルを探しました。
ajax-test-form.vmでは関係しそうなコードの一部で
#ALtdcaption($!result.getFieldName("note")) #ALtditemheader() #ALtextarea('note' $!result.Note 10 40)
!$resultという記述があったので、これを扱うTestResultDataの中で
/** URL */ private ALStringField url;
public String getUrl(){ return ALEipUtils.getMessageList(url.getValue()); }
public void setUrl(String string){ url.setValue(string); }
を追加しました。
さらに、TestFormData内で
/** URL */ private ALStringField url;
// URL url.setValue(test.getUrl());
// URL test.setUrl(url.getValue());
public ALStringField getUrl() { return url; }
// URL url = new ALStringField(); url.setFieldName(ALLocalizationUtils .getl10n("TODO_SETFIELDNAME_URL")); url.setTrim(false);
を追加しました。 この時点ではまだTODO_SETFIELDNAME_URLは定義されていないので、メモなどの機能と同様な場所 /test-portlet/war/src/main/resources/com/aimluck/eip/modules/localization/AipoLocalization_ja.properties からTODO_SETFIELDNAME_URLをURLと定義しました。
最後に、もう一度ajax-test-form.vmにもどり、
#ALtdcaption($!result.getFieldName("url")) #ALtditem("#ALtextfieldw100('url' $!result.Url 50 'active')")
を記述しました。
vmファイルの分からない部分については、 /test-portlet/war/src/main/webapp/WEB-INF/templates/vm/GlobalMacros.vm を参考にして調べました。
追記:自分のように出来たには出来たけど理解はあまり出来てない、という人が調べるべきキーワードをまとめます。
$!result などがわからない ⇛ velocity について調べましょう。$などはvelocityの表記だそうです。
そもそもjava がわからない ⇛ javaの解説サイトを見つけましょう。おすすめは http://nobuo-create.net/category/java-beginner/ です。
getUrl setUrl とかわからない ⇛ オブジェクトについて調べましょう。http://nobuo-create.net/java-beginner-17/
そもそもファイルが多すぎて何が何だか分からない ⇛ MVCモデルについて調べましょう。aipoの中身はこれを基に作られているらしいです。