Scenic3を可変長のURL引数に対応してみた
slim3のMLでこんなURLに対応できないの?という話があがっていました
/foo/bar/a/very/long/long/long/long/long/long/long/path/
つまり、パスでIdか何かが区切られていて、かつ可変長なパターンです。
正直な所あまりないのかな?と思いつつも、ファイルのフォルダ管理とかを行うならばありなのかな?と思いつつ、Scenic3で出来ないか考えてみました。
結果、こんな感じ。
@Page("/") public class FrontPage extends ScenicPage { @ActionPath("longPath/{ids}*") public Navigation longPath(@Var("ids") String... ids) { // ... } }
{ids}*の*を指定してアクションメソッドの引数を可変長パラメータにするだけ。ただし、現状ではパスの最後にないといけないですが、概ねは要件を満たせるんじゃないのかな?と思っています。対応している型は、String,int,long,Integer,Long、まあ十分じゃないかな。
デモサイトはこちら。
ちなみに、Slim3の1.0.6がリリースされたら、この機能を含めた0.3.0をリリースする予定です。