jQueryのDatepickerをStruts1.x環境で使ってハマったところメモ
Struts1.xで日付入力にカレンダー表示から日付選択して入力させる。
Struts1.xはHTML5が使用できないし、Strutsのカスタムタグもカレンダー表示なんてリッチな機能はない。
そこでjQueryのDatepickerを使ってみたが、ハマったので内容をメモしておく。
実現したい機能
- Datepickerを使った日付の入力画面がある。<html:text>のStrutsタグを利用している。
- 日付を入力後submitボタンを押下すると入力内容の確認画面に遷移する。
- 入力確認画面から戻るボタンを押すと入力画面に戻る。
- 入力画面に戻ると入力済みの情報が引き継がれている
- Strutsタグを使っているのでフォームのデータの受け渡しはActionFormを経由している。
問題点
戻るボタンを押下して画面遷移すると、日付の入力データが引き継がれていない。
原因
Datepickerのoption設定処理時にActionFormから取得した日付情報が削除されていた。
対応
変数に日付情報を退避し、dateFormat後に再度日付情報を取得する。 具体的には以下のような感じだったはず。記憶を頼りに書いているので間違っていたら後日修正しよっと。
<script> $(function(){ $(“#datepicker”).datepicker(); var date = $(“#datepicker”).val(); $(“#datepicker”).datepicker("option", "dateFormat", 'yy/mm/dd').val(date); }); </script>