マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

Struts2.1のAjax機能

この本はstruts2.0.11.1を扱っているのでカレンダーを表示するdatetimerpickerの使い方は

<s:head theme="ajax" />
<s:datetimepicker name="datetime1" label="カレンダー" displayFormat="yyyy/MM/dd" />

となっているけど、2.1.6でこのまま実行すると

プレフィックス "s" でインポートされたタグライブラリにタグ "datetimepicker" が定義されていません
と言われてしまう。またの部分を消すと今度は
freemarker.core.InvalidReferenceException: Expression parameters.parseContent is undefined on line 45, column 28 in template/ajax/head.ftl.
と怒られる。

この対策として、まずstruts2-dojo-plugin-2.1.6.jarをクラスパスに入れる。そしてJSP

<%@taglib prefix="sx" uri="/struts-dojo-tags" %>

を定義。そしてカレンダーを表示させたい部分に

<sx:head/>
<sx:datetimepicker name="datetime1" label="カレンダー" displayFormat="yyyy/MM/dd" />

を入れることでカレンダーが表示されるようになった。datetimepickerに限らずajax関係も(この場合)s:ではなくsx:で扱える