S2StrutsとJSTL

昨日の続きで、S2StrutsJSTLを使いたくて奮闘。タグは通るのにELが通らない問題に長時間はまりました。結局、s2struts-blankのweb.xmlを変更する必要があったようです。

手順を書いておきます。
(1) JSTLのダウンロードと導入。

 http://jakarta.apache.org/site/downloads/index.html の、TagLibsを選んで、Standard 1.1 Taglib を更に選ぶ。jakarta-taglibs-standard-1.1.2.zipをDLして展開。jstl.jarと、standard.jarをWEB-INF/libに配置する。

(2) WEB-INF/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">

(3) あとはこんな感じのjspを用意して動作確認。

<%@ page contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>

<head>
 <meta http-equiv="Content-type" content="text/html; charset=Shift_JIS"/>
 <title>JSTLテスト</title>
</head>
<body>
<center>
 <%
  request.setAttribute("test","hello");
 %>
 <c:out value="${test}"/><br/>
 EL:${test}<br/>
</center>
</body>
</html>

※当初なかなか動かなくて、以下を試行錯誤していましたが、全く不要ですのでご注意を。

  • CATALINA_HOME/common/lib にjstl.jarとstandard.jarを配置してみた。
  • tldファイルを、WEB-INF/tld に配置してみた。
  • web.xmlに、タグを書いてみた。