カレントパスを気にせずにjspにcssファイル等のパスを指定する方法

同じjspを使う場合であってもurlが/employeeと/employee/indexなどとカレントパスが異なる場合があるので、jsp内でcssファイルなどを相対パスでベタ書きした場合には、どちら一方は正しくないパスとなってしまいます。

なにかSAStruts側で用意されていないか調べてみたらありました。

aタグのhref要素などを設定するときに、コンテキストルートを自動的に補完させる場合は、 f:url()を使います。パスを/ではじめた場合は、コンテキストルートからみたパスになります。パスが/ではじまっていない場合は、JSPからみたパスになります。

こんな感じで書けます。

<link rel="stylesheet" type="text/css" href="${f:url("/css/hoge.css")}">

パスを/ではじめるのがミソですね。

これを知らなかったら、

<link rel="stylesheet" type="text/css" href="<%= request.getContextPath() %>/css/hoge.css">

といった感じの記述をたくさん書いてしまうところでした。

結果は同じですが、前者の方が断然シンプルですね。