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コードにアクセスできなくなるのであった。