MyFacesのinputCalendarの続き
あーこれはハメ技だー。MyFacesの拡張機能(inputCalendarも含む)を使う場合には以下のような設定をweb.xmlに追加する必要がある。
extensionsFilter org.apache.myfaces.component.html.util.ExtensionsFilter uploadMaxFileSize 100m uploadThresholdSize 100k extensionsFilter *.jsf extensionsFilter /faces/*
ここで「オレは/faces/なんてディレクトリでアクセスしないし」とか「jsfなんて拡張子でアクセスしないし」と思っても,filter-mapping定義を削除してはいけないのである。このfilter-mappingは,拡張機能が自分で使うリソースにアクセスするために使うからである。例えばinputCalendarはJavaScriptで実装しているが,MyFacesが生成するページには,こんな風に埋め込まれている。
<script src="/hoge/faces/myFacesExtensionResource/calendar.HtmlCalendarRenderer/1113412660000/popcalendar.js" type="text/javascript"> </script>
/faces/のfilter-mappingを削除してしまうと,inputCalendarのJavaScriptコードにアクセスできなくなるのであった。