QA@IT

TaglibsのDBtagsは、Tomcat9でも動作するのか?

289 PV

Tomcat5でのDBtagsユーザです。
Tomcat9へ移行する必要が生じて、*.warごと移したのですが、
"taglib definition not consistent with specification version"
というエラーが生じて動作しません。
動作されている方はいらっしゃいますでしょうか?
又、Taglibs本家サイトを見ると、DBtagsは、retiredのようなのですが、
Tomcatでの単純なDBアクセスには何を用いているのでしょうか?

回答

失礼しました。

<c:forEach var="rec" items="${rs}"> が誤りで、

<c:forEach var="rec" items="${rs.rows}"> でした。

御騒がせして、申し訳ありません。

しかし、
<%@ taglib prefix="sql" uri="http://jakarta.apache.org/taglibs/dbtags" %>
側の問題は残っています。

編集 履歴 (0)

投稿したのは、
<%@ taglib prefix="sql" uri="http://jakarta.apache.org/taglibs/dbtags" %>
で定義される大昔のDBtagsです。(個人的には、こちらの方が使い易いのですが。。。)

standard-taglibsの dbtags(ver1.2.5)を用いて、以下のJSPファイルをTomcat9の上で
動かした所、エラーになってしまいました。

<%@ page contentType="text/html;charset=UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

<html>
<head>
<title>生産者一覧
</head>
<body>
<sql:setDataSource dataSource="jdbc/kome" var="kome"/>
<sql:query var="rs" dataSource="${kome}">
select 出荷業者名 from 出荷業者
</sql:query>
<c:forEach var="rec" items="${rs}">
<c:out value="${rec.出荷業者名}"/>
</c:forEach>
</body>
</html>

障害は、

org.apache.jasper.JasperException: An exception occurred processing [/test.jsp] at line [15]

12:
13: select 出荷業者名 from 出荷業者
14: /sql:query
15:
16:
17: /c:forEach
18:

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:666)
org.apache.jsp.test_jsp._jspService(test_jsp.java:168)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

といったものです。私の環境が悪いのでしょうか?

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。