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

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

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

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

Java

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

Struts

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

Eclipse

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

解決済

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

k_kkk
k_kkk

総合スコア4

JSP

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

Java

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

Struts

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

Eclipse

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

1回答

0評価

1クリップ

1183閲覧

投稿2020/10/30 05:43

編集2020/11/02 04:48

概要

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: falgc00300

エラーメッセージによるとfalgc00300が認識できていないようなのですが、実装を見直しても欠けている箇所はないように思います。

ソースコード

以下、ソースコードになります。

frame.jsp(tilesを用いてページの構造を作っています)

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>test</title> </head> <body> <div id="top"> <div id="wrapper"> <!-- ヘッダー領域 --> <tiles:insertAttribute name="header" /> <div id="contents"> <!-- サイドバー領域 --> <tiles:insertAttribute name="subMenu" /> <!-- メイン領域 --> <tiles:insertAttribute name="content" /> </div> <!-- フッター --> <tiles:insertAttribute name="footer" /> </div> </div> </body> </html>

Page003.jsp(ログイン後表示されるメインメニューのjsp)

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <%@ taglib tagdir="/WEB-INF/tags" prefix="ctag"%> <script src="./script/paging.js"></script> <script type="text/javascript"> </script> <s:form action="page003"> <div id="main"> -----省略----- </div> <!-- /#main --> </s:form>

Page003Action.java(ログイン後表示されるメインメニューのAction)

java

package jp.co.hoge.fuga.action.top; import java.io.File; import java.sql.SQLException; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateUtils; import com.opensymphony.xwork2.ModelDriven; public class Page003Action extends BaseAction implements ModelDriven<Page003> { /** * */ private static final long serialVersionUID = 1L; /** * モデルクラス */ private Page003 model = new Page003(); @Override public Page003 getModel() { return model; } /** * デフォルトメソッド */ public String execute() { return "success"; } }

web.xml

xml

<?xml version="1.0" encoding="UTF-8"?> <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"> <display-name>Struts Blank</display-name> <distributable /> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <listener> <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class> </listener> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

struts.xml

xml

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <constant name="struts.devMode" value="false" /> <constant name="struts.ui.theme" value="simple" /> <constant name="struts.action.extension" value="do,action,json" /> <constant name="struts.multipart.maxSize" value="104857600" /> <constant name="struts.custom.i18n.resources" value="constant,message" /> <constant name="struts.appVersion" value="X.X.X" /> <package name="default" namespace="/" extends="struts-default"> <result-types> <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" /> </result-types> -----省略----- <!-- ログイン --> <action name="page001" class="jp.co.hoge.fuga.action.Page001Action"> <result name="success">/WEB-INF/jsp/Page001.jsp</result> <result name="input">/WEB-INF/jsp/Page001.jsp</result> <result name="login_success" type="chain">page003</result> </action> <!-- TOP メインメニュー --> <action name="page003" class="jp.co.hoge.fuga.action.top.Page003Action"> <result name="success" type="tiles">Page003</result> </action> -----省略----- </package> -----省略----- <include file="webapi.xml" /> </struts>

tiles.xml

xml

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <tiles-definitions> <definition name="admin.default" template="/WEB-INF/jsp/tiles/frame/frame.jsp"> <put-attribute name="header" value="/WEB-INF/jsp/tiles/frame/header.jsp" /> <put-attribute name="subMenu" value="/WEB-INF/jsp/tiles/frame/subMenu.jsp" /> <put-attribute name="mainFooter" value="/WEB-INF/jsp/tiles/frame/mainFooter.jsp" /> <put-attribute name="footer" value="/WEB-INF/jsp/tiles/frame/footer.jsp" /> </definition> -----省略----- <definition name="Page001" extends="admin.default"> <put-attribute name="content" value="/WEB-INF/jsp/Page001.jsp" /> <put-attribute name="script" value="page001" /> </definition> <definition name="Page003" extends="admin.default"> <put-attribute name="content" value="/WEB-INF/jsp/top/Page003.jsp" /> <put-attribute name="script" value="page003" /> </definition> -----省略----- </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

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JSP

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

Java

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

Struts

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

Eclipse

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