URL中の"view"の排除

Teedaで使用するHTMLテンプレートは、src/main/webapp/view フォルダの中に作成するという規約になっている。
プロジェクト名を foo、サブアプリケーション名を bar にした場合、src/main/webapp/view/bar/index.html を作成すると、そのページにアクセスする為のURLは、http://localhost:8080/foo/view/bar/index.html となる訳だが…、viewって当たり前ですよね。

と思っていたら、解決法が紹介されておりました。

viewが不要ならNamingConventionImplのviewRootPathを/にすればOKです。

http://d.hatena.ne.jp/itoasuka/20070129/1170056169

HTMLファイルもsrc/main/webapp直下におけばURLから/view/は無くせました(略)

http://d.hatena.ne.jp/maxroze/20070130/1170134659


というわけで、src/main/resources/convention.dicon の NamingConventionImpl に下記を追加。

<property name="viewRootPath">"/"</property>

こうすれば、src/main/webapp/ 直下にテンプレート(例えば src/main/webapp/bar/index.html)を作成すればURLからviewを排除できます。

ついでにプロジェクトのテンプレート用ソースフォルダ(デフォルトでsrc/main/webapp/view)を src/main/webapp に変更したくなりますね。というわけで、プロジェクトのプロパティ → Javaのビルドパス → ソース(S) タブから foo/src/main/webapp/view を削除し、新規で foo/src/main/webapp を追加すると…

'foo/src/main/webapp' 内で出力フォルダー 'foo/src/main/webapp/WEB-INF/classes' をネストできません。

うは。確かに。どうしよう。

追記

ソースフォルダ foo/src/main/webapp の除外パターンに WEB-INF/classes/ を追加することにより、設定可能になりました!

デフォルトで含まれる /view/error/error.html も移動した場合は、teedaErrorPage.dicon の設定も変更するのをお忘れ無く。

<component class="org.seasar.teeda.extension.util.TeedaExtensionErrorPageManagerImpl">
	<initMethod name="addErrorPage">
		<arg>@java.lang.Throwable@class</arg>
		<arg>"/error/error.html"</arg>
	</initMethod>
</component>