struts2 wildcard mapping

struts1.2から追加された「wildcard mapping」だが、結構便利だ。
使い方によっては、Apachemod_rewriteみたいな動きが可能になる。
簡単に言えば、あるActionにマッピングするパスを動的に変更できる。



/{1}.jsp

よくある使い方がこんな感じ。
http://localhost:8080/test.actionでアクセスした場合に、WebRoot/test.jspが表示されることになる。
これを少し応用すると、以下のような設定もできる。



/{1}/{2}.jsp

こんな感じの設定を入れてあげれば、
http://localhost:8080/20090409/test.action でアクセスした場合に、WebRoot/20090409/test.jspの内容が表示される。
http://localhost:8080/20090410/test.action でアクセスすれば、WebRoot/20090410/test.jspの内容が表示される。
つまり、一つのactionクラスを使って異なるviewを表示させたりする場合に便利だ。
 
ただし、上記の設定の場合は注意点がある。
struts2においてデフォルトでは/(スラッシュ)はマッピングのパスに含めることができないため、struts.propertiesに以下の設定をしなければならない。

struts.enable.SlashesInActionNames = true