概要
Struts2 2.3を使用して、Webアプリケーションを運用しています。
2.3がEOLを迎えているため、2.5へバージョンアップを行うこととなりました。
https://www.jpcert.or.jp/at/2020/at200034.html
2.3使用時からいくつかのプラグインを導入しており、その内、struts2-mayaa-plugin-1.0.1.jarに関して手詰まりになってしまったため、質問いたします。
http://mayaa.seasar.org/subprojects/index.html#mayaastruts2
発生している問題
今回発生している問題は、struts2-convention-pluginを使用したResults,Resultアノテーション内に
@Result(name = "success", type = "mayaa", location = "login.html")
と記述した場合に mayaa が認識されない事象になります。
tomcat起動時に以下のエラーメッセージが表示されます。
・エラーメッセージ
Result type [mayaa] which is defined in the Result annotation on the class [class jp.co.abc.hoge.action.XXXAction] or determined by the file extension or is the default result type for the PackageConfig of the action, could not be found as a result-type defined for the Struts/XWork package [jp.co.abc.hoge.action#hoge#] - [unknown location]
既にstruts2-mayaa-plugin-1.0.1.jar内にstrutrs-defaultを継承する記述があり、typeの定義等もされているので、読み込めていない原因が特定できません。
xml
1<?xml version="1.0" encoding="UTF-8" ?> 2 3<!DOCTYPE struts PUBLIC 4 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 5 "http://struts.apache.org/dtds/struts-2.0.dtd"> 6 7<struts> 8 <package name="mayaa-default" extends="struts-default"> 9 <result-types> 10 <result-type class="org.seasar.mayaa.struts2.MayaaResult" 11 name="mayaa" /> 12 </result-types> 13 </package> 14</struts>
該当のソースコード
struts.xmlに対しては前バージョン(2.3.32)使用時から以下のような記述をしており、変更はしていません。
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.custom.i18n.resources" value="constant,message" /> 12 <constant name="struts.appVersion" value="X.X.X" /> 13 14 <package name="default" namespace="/" extends="struts-default"> 15 ----省略---- 16 </package> 17 18 ---------mayaa-defaultを使用しない他パッケージに関する宣言のため省略------------ 19 20 <package name="hoge" namespace="/hoge" extends="mayaa-default"> 21 <interceptors> 22 <interceptor name="hogeDefaultStack" class="jp.co.abc.hoge.interceptor.LoginInterceptor" /> 23 </interceptors> 24 <global-results> 25 <result name="login_error">login.html</result> 26 <result name="error">login.html</result> 27 </global-results> 28 </package> 29 30 <include file="webapi.xml" /> 31</struts>
また、対応するAction.javaには以下の通り定義しています。
java
1@ParentPackage("hoge") 2@InterceptorRefs({ 3 @InterceptorRef("hogeDefaultStack"), 4 @InterceptorRef("defaultStack") 5}) 6@Results({ 7 @Result(name = "success", type = "mayaa", location = "login.html"), 8 @Result(name = "login", type = "mayaa", location = "index.html") 9}) 10
試したこと
①
以下のサイトを参考に2.3→2.5へのバージョンアップに伴う基本的な変更点については既に反映済みで、ビルドエラーはありません。
https://cwiki.apache.org/confluence/display/WW/Struts+2.3+to+2.5+migration#space-menu-link-content
②
アノテーションを用いず、struts.xmlに直接actionやResultを列挙する形式でも試しましたが、エラーに変化はありませんでした。
③
struts.xmlの
<package name="hoge" namespace="/hoge" extends="mayaa-default">
からmayaa-defaultを適当な文字列に変更した場合、読み込めない旨、エラーメッセージが表示されるのでmayaa-default自体は読み込めていると思われます。
補足情報
■使用IDE
eclipse oxygen
■JDK
jdk8u262-b10
■tomcat
7.0.104
■主な使用ライブラリ
struts 2.5.22
mayaa-1.1.34.jar
struts2-mayaa-plugin-1.0.1
ご教示の程よろしくお願い致します
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/10/26 01:19 編集