概要
tilesのエラーメッセージで手詰まりとなっています。
Struts2.3から2.5へアップデートした際、tilesについても内包されているtiles3に置き換わりました。
tomcat起動後、ログインページのログインボタンを押下するとエラーメッセージが表示されます。
・エラーメッセージ
2020/10/30 13:40:15:809 WARN org.apache.struts2.views.tiles.TilesResult (138) got TilesException while checking if definiton exists, ignoring it
org.apache.tiles.definition.DefinitionsFactoryException: I/O Error reading definitions.
at org.apache.tiles.definition.digester.DigesterDefinitionsReader.read(DigesterDefinitionsReader.java:331) ~[tiles-core-3.0.8.jar:3.0.8]
at org.apache.tiles.definition.dao.BaseLocaleUrlDefinitionDAO.loadDefinitionsFromResource(BaseLocaleUrlDefinitionDAO.java:150) ~[tiles-core-3.0.8.jar:3.0.8]
at org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO.loadRawDefinitionsFromResources(CachingLocaleUrlDefinitionDAO.java:239) ~[tiles-core-3.0.8.jar:
-----省略-----
2020/10/30 13:40:15:843 WARN org.apache.struts2.views.tiles.TilesResult (154) could not find @TilesDefinition for action: Page003
エラーメッセージによるとPage003が認識できていないようなのですが、実装を見直しても欠けている箇所はないように思います。
ソースコード
以下、ソースコードになります。
frame.jsp(tilesを用いてページの構造を作っています)
jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ taglib prefix="s" uri="/struts-tags"%> 4<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> 5<!DOCTYPE html> 6<html lang="ja"> 7<head> 8<meta charset="utf-8"> 9<meta http-equiv="X-UA-Compatible" content="IE=edge"> 10 11<title>test</title> 12</head> 13<body> 14 <div id="top"> 15 <div id="wrapper"> 16 <!-- ヘッダー領域 --> 17 <tiles:insertAttribute name="header" /> 18 19 <div id="contents"> 20 <!-- サイドバー領域 --> 21 <tiles:insertAttribute name="subMenu" /> 22 23 <!-- メイン領域 --> 24 <tiles:insertAttribute name="content" /> 25 </div> 26 <!-- フッター --> 27 <tiles:insertAttribute name="footer" /> 28 </div> 29 </div> 30</body> 31</html>
Page003.jsp(ログイン後表示されるメインメニューのjsp)
jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ taglib prefix="s" uri="/struts-tags"%> 4<%@ taglib tagdir="/WEB-INF/tags" prefix="ctag"%> 5<script src="./script/paging.js"></script> 6<script type="text/javascript"> 7</script> 8<s:form action="page003"> 9 <div id="main"> 10 -----省略----- 11 </div> 12 <!-- /#main --> 13</s:form>
Page003Action.java(ログイン後表示されるメインメニューのAction)
java
1package jp.co.hoge.fuga.action.top; 2 3import java.io.File; 4import java.sql.SQLException; 5import java.util.Calendar; 6import java.util.Date; 7import java.util.HashMap; 8import java.util.List; 9 10import org.apache.commons.lang3.StringUtils; 11import org.apache.commons.lang3.time.DateUtils; 12 13import com.opensymphony.xwork2.ModelDriven; 14 15public class Page003Action extends BaseAction implements ModelDriven<Page003> { 16 /** 17 * 18 */ 19 private static final long serialVersionUID = 1L; 20 21 /** 22 * モデルクラス 23 */ 24 private Page003 model = new Page003(); 25 26 @Override 27 public Page003 getModel() { 28 return model; 29 } 30 31 /** 32 * デフォルトメソッド 33 */ 34 public String execute() { 35 return "success"; 36 } 37} 38
web.xml
xml
1<?xml version="1.0" encoding="UTF-8"?> 2<web-app id="WebApp_9" version="2.4" 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"> 3 4 <display-name>Struts Blank</display-name> 5 <distributable /> 6 7 <filter> 8 <filter-name>struts2</filter-name> 9 <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> 10 </filter> 11 12 <listener> 13 <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class> 14 </listener> 15 16 <filter-mapping> 17 <filter-name>struts2</filter-name> 18 <url-pattern>/*</url-pattern> 19 <dispatcher>REQUEST</dispatcher> 20 <dispatcher>FORWARD</dispatcher> 21 </filter-mapping> 22 23 <welcome-file-list> 24 <welcome-file>index.jsp</welcome-file> 25 </welcome-file-list> 26</web-app> 27
struts.xml
xml
1<?xml version="1.0" encoding="UTF-8" ?> 2<!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" 4 "http://struts.apache.org/dtds/struts-2.5.dtd"> 5 6<struts> 7 <constant name="struts.enable.DynamicMethodInvocation" value="true" /> 8 <constant name="struts.devMode" value="false" /> 9 <constant name="struts.ui.theme" value="simple" /> 10 <constant name="struts.action.extension" value="do,action,json" /> 11 <constant name="struts.multipart.maxSize" value="104857600" /> 12 <constant name="struts.custom.i18n.resources" value="constant,message" /> 13 <constant name="struts.appVersion" value="X.X.X" /> 14 15 <package name="default" namespace="/" extends="struts-default"> 16 <result-types> 17 <result-type name="tiles" 18 class="org.apache.struts2.views.tiles.TilesResult" /> 19 </result-types> 20 21 -----省略----- 22 23 <!-- ログイン --> 24 <action name="page001" class="jp.co.hoge.fuga.action.Page001Action"> 25 <result name="success">/WEB-INF/jsp/Page001.jsp</result> 26 <result name="input">/WEB-INF/jsp/Page001.jsp</result> 27 <result name="login_success" type="chain">page003</result> 28 </action> 29 <!-- TOP メインメニュー --> 30 <action name="page003" class="jp.co.hoge.fuga.action.top.Page003Action"> 31 <result name="success" type="tiles">Page003</result> 32 </action> 33 34 -----省略----- 35 36 </package> 37 38 -----省略----- 39 40 <include file="webapi.xml" /> 41</struts>
tiles.xml
xml
1<?xml version="1.0" encoding="UTF-8" ?> 2<!DOCTYPE tiles-definitions PUBLIC 3"-//Apache Software Foundation//DTD Tiles Configuration 2.5//EN" 4"http://struts.apache.org/dtds/struts-2.5.dtd"> 5<tiles-definitions> 6 <definition name="admin.default" template="/WEB-INF/jsp/tiles/frame/frame.jsp"> 7 <put-attribute name="header" 8 value="/WEB-INF/jsp/tiles/frame/header.jsp" /> 9 <put-attribute name="subMenu" 10 value="/WEB-INF/jsp/tiles/frame/subMenu.jsp" /> 11 <put-attribute name="mainFooter" 12 value="/WEB-INF/jsp/tiles/frame/mainFooter.jsp" /> 13 <put-attribute name="footer" 14 value="/WEB-INF/jsp/tiles/frame/footer.jsp" /> 15 </definition> 16 17 -----省略----- 18 19 <definition name="Page001" extends="admin.default"> 20 <put-attribute name="content" value="/WEB-INF/jsp/Page001.jsp" /> 21 <put-attribute name="script" value="page001" /> 22 </definition> 23 <definition name="Page003" extends="admin.default"> 24 <put-attribute name="content" value="/WEB-INF/jsp/top/Page003.jsp" /> 25 <put-attribute name="script" value="page003" /> 26 </definition> 27 28 -----省略----- 29 30</tiles-definitions>
確認できていること
ログインページでログインボタンを押下するとPage001Action.javaのログイン処理が起動し、ユーザ照合が行われたのち、login_successを返却しています。
以降struts.xmlの
<result name="login_success" type="chain">page003</result>
の記述に従って、Page003Action.javaのexecute()が実行され、successを返却しているていることはデバッグで確認済みです。
successが返却されるとstruts.xmlの記述に従ってPage003.jspが起動する認識でいるのですが、上述したようなエラーが表示されてしまいます。
主な使用ライブラリ
struts2-config-browser-plugin-2.5.22.jar
struts2-convention-plugin-2.5.22.jar
struts2-core-2.5.22.jar
struts2-tiles-plugin-2.5.22.jar
tiles-api-3.0.8.jar
tiles-autotag-core-runtime-1.2.jar
tiles-core-3.0.8.jar
tiles-jsp-3.0.8.jar
tiles-request-api-1.0.7.jar
tiles-request-servlet-1.0.7.jar
tiles-servlet-3.0.8.jar
tiles-template-3.0.8.jar
ご教示のほどよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/11/02 05:11
退会済みユーザー
2020/11/02 05:46