Tomcat5.5とJSTLで久しぶりに大はまり
Googleで検索したらまったく同じ症状の人がいた。
以下私のテキトーな翻訳。
JSTL 1.1.2, Tomcat 5.5, JDK5, Ecliseで問題発生JSTLライブラリ(standard.jarとjstl.jar)の使用でトラブルを抱えている。私はEclipse3.0.2でJSPページの開発を行っていて、Tomcat(5.5 on JDK 5.0)プロジェクトをSysdeoプラグインを使ってデフォルトのディレクトリに作成した。とくに変なことは行っていない。
私が開発でJSTL(1.1.2)を使ってJSPを作成していた時に問題は発生した。(standard.jarやjstl.jarは推奨どおりに/WEB-INF/lin下に配備した。)
その問題はJSTLのライブラリがうまく働いていないように見えるものだった。
それは以下のようなコードだった。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
... //some code
このJSP中で「${fn:escapeXml(param["myreq"])} 」と言うコードを埋め込んだ時、JSPはそのまま何の処理も行わず「${fn:escapeXml(param["myreq"])} 」と出力した。Tomcatはその処理の最中、なんの実行エラーも起こさず(これはTomcatがライブラリのロードを正常に終了したことを意味している)、しかし、これを見る限りtaglibは正常に動作していない!!!
(以下面倒になったので回答だけ)
Re: JSTL 1.1.2, TOMCAT 5.5, JDK 5, Eclipse andそりゃあ多分、おまいさんのweb.xmlがおかしいのさ。
もし、あんたのweb.xmlがサーブレットのバージョン2.3で宣言されているんだったらJSTLのEL式言語はデフォルトで働かないようになってるよ。
もしこんな風にweb.xmlを記述しているんだったらば、、
<?xml version="1.0"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app>
web.xmlを以下のように変更してみ?
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
そしておまいさんが変更しちまった設定ファイルの編集をちゃんと元に戻しておくんだよ、JSTLはtldファイルは必要ないし(訳注:本当に??) web.xmlになんにも書かなくてもちゃんと実行されるでよ。