質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

4124閲覧

Struts2.5環境下でtilesが認識されない

退会済みユーザー

退会済みユーザー

総合スコア0

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

1クリップ

投稿2020/10/30 05:43

編集2023/09/29 09:46

概要

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

ご教示のほどよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

BaseActionで実装されている内容(ActionSupportを継承?)によっては動作が変わる可能性はありますが、その他設定ファイルを見た限り、いくつかStruts2-tilesプラグインの2.5系を見比べたところ、いくつか気になるところがありますので以下列挙します。

struts.xmlのresult値と、tiles.xmlの定義で大文字小文字が異なって定義しているのでどちらかに揃える。

diff

1- page003 2+ Page003

struts.xml

xml

1<result name="success" type="tiles">Page003</result>

tiles.xml

xml

1<definition name="page003" extends="admin.default">

tiles.xmlのDTDが異なる

3.0系ですので、宣言部を3.0系に変えます。

xml

1<!DOCTYPE tiles-definitions PUBLIC 2 "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" 3 "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">

https://struts.apache.org/plugins/tiles/

導入しているjarファイルが足りていない?

少なくともmavenを利用して struts2-tiles-2.5.22 を導入していれば依存関係でさらに追加するものはありませんが、列挙していただいたjarファイルの中に、tiles-ognl-3.0.8、tiles-el-3.0.8 がありません。

その他、Page003のみの定義とActionクラスはActionSupportを継承した状態で動作させた限りでは特に問題はありません。

投稿2020/10/30 12:44

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/11/02 05:11

ご回答ありがとうございます。 まず、大文字小文字の差異についてですが、実ファイルから質問用に書き換える際に間違えて小文字としてしまっていました。ご指摘いただいたstruts.xmlのresultタグ、tiles.xmlのdefinitionタグの大文字小文字差異については実ファイル上はありません。 tiles.xmlのDTDに関しては修正いたしました。2.3の頃からtiles.xmlのdtdはstrutsの記述がなされており、前任者の意図は分かりませんが、正常に動作している状態でした。 最後にjarファイルについてですが、ognl、el共に導入済みです。記載が漏れていました。申し訳ございません。 エラーについては継続しており、引き続き自己解決を図っておりますが、お力添えいただければ幸いです。
退会済みユーザー

退会済みユーザー

2020/11/02 05:46

先にコメントしました通り、ご指摘いただいた点の内、DTDの修正のみを行いましたが、エラーが継続していました。 その後、数回クリーン後起動したところ無事ページ遷移を確認できました。 DTDに関してはtilesの記述とするとエラーとなったこともあり、差分を分析しても解せない状況ではありますが、また一歩前進できました。前回に引き続き有力なご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問