セキュリティ界隈でご承知のStrutsフレームワーク脆弱性対応の一環として ⇒ ( https://www.ipa.go.jp/security/ciadr/vul/20180823-struts.html )
タグリブの挙動確認での環境で、
JSP <%@ taglib uri="/tags/struts-html" prefix="html" %> 式で指定する場合がある。
このとき web.xml で
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib> などの指定方法があるけど普通に、
JSP <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
のように直接URIを指定すればよい
struts-taglib-1.3.10.jar
META-INF
tld
struts-logic.tld
でURIが以下に指定されている。
<taglib>
<tlib-version>1.3</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>logic</short-name>
<uri>http://struts.apache.org/tags-logic</uri>
/////// 知っていれば当たり前なのかもしれないけど、知らないと出くわすエラーその1 /////////
<c:set ら、cタグ ( = Core Tags / JSTL ) は、
standard-1.0.7.jar
META-INF
c.tld ( <uri>http://java.sun.com/jstl/core</uri> )
fmt.tld ら、
+
jstl-1.0.2.jar
javax.servlet.jsp.jstl
core
fmt
sql
tlv
jstl-1.0.2.jar が欠けると、以下
javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTag
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:358)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
////// 知っていれば当たり前なのかもしれないけど、知らないと出くわすエラーその2///
『TLD又はタグファイル中のattribute指示子に従って属性valueはどんな式も受け付けません』??
以下の c:out value="${element}" でなにやらわけのわからないエラー発生。
<logic-el:iterate id="element" name="bean" property="stringArray"
indexId="index">
<li><em><c:out value="${element}"/></em> [<c:out value="${index}"/>]</li>
</logic-el:iterate>
⇒古い頃の 動的Webプロジェクト対応のためか、以下バージョン 2.3 に合わせる必要あり。
<!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 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> とかだとうまくいかない。移行前現行システム解析は面倒。でもこういった既存解読が移行計画はどうしても必要。
////// 知っていれば当たり前なのかもしれないけど、知らないと出くわすエラー その3///
commons-beanutils-1.8.0.jar が欠けてるとなにやら以下のエラー。 Apache Commonsに依存している。
HTTPステータス 500 - javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/beanutils/PropertyUtils
メッセージ javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/beanutils/PropertyUtils
説明 The server encountered an internal error that prevented it from fulfilling this request.
例外
org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/beanutils/PropertyUtils org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:405) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:349) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
////// 知っていれば当たり前なのかもしれないけど、知らないと出くわすエラー その4 ////
commons-logging-1.0.4.jar が欠けてると今度は以下のエラー。なにかとCommons に依存している模様。
HTTPステータス 500 - javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
メッセージ javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
説明 The server encountered an internal error that prevented it from fulfilling this request.
例外
org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:405) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:349) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)