hiddenによる値渡し

 aipoでは、vmファイル上で書かれた変数の値をjavaファイルに持っていくことで、ユーザーが入力した内容に対応した処理を行っている。(javascriptで書かれた内容をjavaプログラム上で処理するのは一般的なことかもしれないが)

 このようにして、PC版のaipoであれば1つのページ上で、日時・繰り返しパターン・スケジュール名を入力し登録することが出来る。
 しかし、ガラケーのように入力画面が小さい場合は1ページで全てを入力することが出来ないため(出来たとしても操作性が悪くなると考えられる)、1ページ目で日時と繰り返しパターンを入力し、2ページ目でスケジュール名やコメントを入力するようになっている。そして、実際に予定をDB上に登録するのは2ページ目の処理である。

 しかし、ガラケーにおけるスケジュール登録画面の1ページ目と2ページ目のvmファイルは別々のものとなっている。そのため、1ページ目で入力した内容をDBに登録させるためには、2ページ目のvmファイル上でも1ページ目での入力内容を覚えさせておく必要がある。しかし、下手にコードを書くとページ上に書いた内容が表示されるため、見栄えが悪くなる可能性がある。

 aipo上では、「hidden」を使うことによって、値渡しを行っている。(javascript上では一般的なことかもしれないが)
 たとえば、毎年のスケジュールを登録する際、1ページ目の日時を入力させる「schedule-form-date-repeat.vm」内のコードは

<input id="repeat_typeY" name="repeat_type" type="radio" value="Y" #if ($!{result.FormData.RepeatType.toString()} == "Y") checked="checked" #end>$l10n.SCHEDULE_EVERY_YEAR
<BLOCKQUOTE>#ALcell_textfield($career 'year_month' "$!{result.FormData.YearMonth}" 2 2 '' 'n') $l10n.SCHEDULE_MONTH #ALcell_textfield($career 'year_day' "$!{result.FormData.YearDay}" 3 2 '' 'n') $l10n.SCHEDULE_DAY</BLOCKQUOTE>


となっており、2ページ目にあたる「schedule-form-note.vm」内のコードでは

<input type="hidden" name="year_month" value="$!{result.FormData.YearMonth}">
<input type="hidden" name="year_day" value="$!{result.FormData.YearDay}">


となっている。「hidden」を使うことで、実際のページでこの内容は表示されることがない。
このようにして、ガラケー上でのスケジュール登録は、2ページ目でも1ページ目の内容をこっそり存在させることで、スケジュール内容を正確にDBに登録している。(値渡しというよりは再定義といったほうが正しいかもしれない)