Config click-app
click-appには、charsetと、localeがあります。
charsetで指定した文字エンコーディングは、
- Velocityのテンプレート
- requestのエンコーディング
- pageのContent-typeのcharset
に使用されます。
なので、以前の記述にある、headersでの、指定は特に必要ないようです。
Filterも必要ありません、気をつけなくてはいけないのは、htmファイルのテキストファイルエンコードとあわせる事です。
あとはcacheとかworkディレクトリのせいで文字化けに悩まされないようにちゃんとwork消して、キャッシュ消して実験することです。(私事)
pages
ページは、
pathと、classnameを1:1でマッピングしますが、
ある特定のパッケージが、すべてPageクラスで、なおかつ以下の命名規約に従っている場合、automappingが可能です。
<pages> <page path="index.htm" classname="com.mycorp.page.Home"/> <page path="login.htm" classname="com.mycorp.page.Login"/> </pages>
のように、com.mycorp.pageパッケージがPageファイルのパッケージであれば、
<pages package="com.mycorp.page" automapping="true"/>
とすることによりAutoMappingがなされます。
また、手動でマッピングする際にも、packageはルートパッケージとして使用できます。
<pages package="com.mycorp.page"> <page path="index.htm" classname=" Home"/> <page path="login.htm" classname=" Login"/> </pages>
automapping
<click-app> <pages package="com.mycorp.page"> <page path="index.htm" classname="Home"/> <page path="search.htm" classname="Search"/> <page path="contacts/contacts.htm" classname="contacts.Contacts"/> <page path="security/login.htm" classname="security.Login"/> <page path="security/logout.htm" classname="security.Logout"/> <page path="security/change-password.htm" classname="security.ChangePassword"/> </pages> </click-app>
上記のようなMappingの場合、
以下のようなマッピングで代替が可能です。
<click-app> <pages package="com.mycorp.page" automapping="true"> <page path="index.htm" classname="Home"/> </pages> </click-app>
対応付けは代替以下のようなルールで行われます。
change-password.htm => ChangePassword change_password.htm => ChangePassword changePassword.htm => ChangePassword ChangePassword.htm => ChangePassword
また、見つからなかった場合、自動的に、Pageをつけたクラスも検索します。
customer.htm => CustomerPage change-password.htm => ChangePasswordPage
excludes
automappingから除外する指定は以下のようにします。
<pages package="com.mycorp.page" automapping="true"> <excludes pattern="/dhtml_/*, /tiny_mce_/*, banner.htm, about.htm"/> </pages>
header
ページごとに、headarの指定が可能です。
<page path="login.htm" classname="com.mycorp.page.Login"/> <header name="Pragma" value="no-cache"/> <header name="Cache-Control" value="no-store, no-cache, must-revalidate, post-check=0, pre-check=0"/> <header name="Expires" value="1" type="Date"/> </page>
また、後述のとおり、共通でheaderを指定することも出来ます。
headers
以下のように共通したheadarのパラメータを指定することが可能です。
<click-app> <pages> .. </pages> <headers> <header name="Pragma" value="no-cache"/> <header name="Cache-Control" value="no-store, no-cache, must-revalidate, post-check=0, pre-check=0"/> <header name="Expires" value="1" type="Date"/> </headers> </click-app>
format
オリジナルのFormatクラスを指定できます。
フレームワークは、net.sf.click.util.Formatをデフォルトで指定してあります。
このFormatクラスは、e-mailの形式や、日付、DecimalFormatなどの表示で有用なフォーマット機能を提供します。
詳細はAPI(http://click.sourceforge.net/docs/click-api/net/sf/click/util/Format.html)を参考に。
画面では、以下のような文法で使用できます。
$format.date($deliveryDate, "dd MMM yyyy")
注
deliveryDateという名前でオブジェクトが取得できることが条件です。
deliveryDateという名前で取得できるオブジェクトを、dd MMM yyyyというフォーマットで変換して表示します。
オリジナルのFormatを登録する場合は、click.xmlに以下のように指定します。
<format classname="com.mycorp.util.CustomFormat"/>
注
Formatのサブクラスは、Localeを引数に受けるコンストラクタを用意する必要があります。
mode
modeでは、logと、キャッシュに関する設定が可能です。
<mode value=" development" logto=”console”/>
がデフォルトと同等です。
Application mode | Page auto loading | Velocity caching | Message caching | Load templates on startup | Click logging level | Velocity logging level |
---|---|---|---|---|---|---|
production | No | Yes | Yes | Yes | WARN | ERROR |
profile | No | Yes | Yes | Yes | INFO | ERROR |
development | Yes | No | No | No | INFO | ERROR |
debug | Yes | No | No | No | DEBUG | ERROR |
trace | Yes | No | No | No | TRACE | WARN |
対応はそれぞれ上記のようになります。
logtoでservletを指定すると、サーバログとして出力されます。
(Tomcat4.1だと、logs/localhost_log.日付.txtになります。)
指定がconsoleの場合、System.outです。
(Tomcat4.1だと、コンソールです。)
controls
controlを登録することが出来ます、ここで登録したcontrolについては、アプリケーションのスタートアップ時に、それぞれのcontrolのonDeployメソッドが実行されます。
<control classname="com.mycorp.control.CustomField"/>
いまいち用途は不明です。
フレームワーク側だと、Tableがcssの配置を行うために、controlを指定してあるようです。extrasの方だと結構指定してあるようです。
Velocity Properties
velocityに関する設定です。
デフォルトでは以下のような指定になっています。
resource.loader=webapp webapp.resource.loader.class=org.apache.velocity.tools.view.servlet.WebappLoader webapp.resource.loader.cache=[true|false] #depending on application mode webapp.resource.loader.modificationCheckInterval=0 #depending on application mode velocimacro.library.autoreload=[true|false] #depending on application mode velocimacro.library=click/VM_global_library.vm
コメントにあるように、modeに依存する設定もあります。
独自の設定を追加したり、上書きをしたい場合には、WEB-INF/velocity.propertiesに設定をすれば可能となります。
AutoDeploy
- click/error.htm - the Page Error Handling template
- click/control.css - the Controls cascading stylesheet
- click/control.js - the Controls _JavaScript library
- click/not-found.htm - the Page Not Found template
- click/VM_Global_library.vm - an empty Velocity macro library
上記のファイルは自動的にロードされ、配置されます。上書きしたい場合には、該当ファイルを用意すれば、独自設定とすることが出来ます。