Struts2.3.32からStruts2.5.25へアップデートを試みています。
Tomcatの起動までに紆余曲折あり、やっと正常に起動できたのですが、
初期画面が表示できなくなってしまいました。
(Actionクラスにブレイクポイントを置いているが到達していない)
何か気づいたことがあれば、ぜひ、教えてください。
あたりがつけられていないため、少し長くなってしまいますが、
関連するクラスと設定ファイルの内容を記載します。
画面遷移用のクラスとjson形式で値を返すクラスがありますが、
まずは初期画面を表示したい次第です。
追記
web.xmlのurl-patternを /* と書き換えたところ、
内部で404が呼ばれるものの、ページの一部が表示されました。
/hoge/* だとダメで /* だと良いというのは何か参考になりますでしょうか。
http://localhost:8080/xxx/hoge/indexにアクセスした際の
Stacktracesは下記の通りです。(devModeをtrueにしています)
log
1Stacktraces 2There is no Action mapped for namespace [/hoge] and action name [index] associated with context path [/xxx]. - [unknown location] 3 com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:195) 4 org.apache.struts2.factory.StrutsActionProxy.prepare(StrutsActionProxy.java:57) 5 org.apache.struts2.factory.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:32) 6 com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:60) 7 org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:564) 8 org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79) 9 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:141) 10 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) 11 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) 12 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) 13 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 14 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 15 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) 16 org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) 17 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 18 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) 19 org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783) 20 org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 21 org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798) 22 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1441) 23 org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 24 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 25 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 26 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 27 java.lang.Thread.run(Thread.java:722)
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <listener> <listener-class>jp.co.company.common.listener.InitialServletContext</listener-class> </listener> <listener> <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class> </listener> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param> <param-name>actionPackages</param-name> <param-value> jp.co.company.common.struts, jp.co.company.basic.action.webapi, jp.co.company.basic.action.content, jp.co.company.action </param-value> </init-param> <init-param> <param-name>struts.devMode</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>struts.custom.i18n.resources</param-name> <param-value>ApplicationResources</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/hoge/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>/index.html</welcome-file> </welcome-file-list> <error-page> <error-code>401</error-code> <location>/WEB-INF/tiles/panel/basic/httpUnauthorizedLayout.jsp</location> </error-page> <error-page> <error-code>403</error-code> <location>/WEB-INF/tiles/panel/basic/httpForbiddenLayout.jsp</location> </error-page> <!-- error-page> <error-code>404</error-code> <location>/WEB-INF/tiles/panel/basic/httpNotfoundLayout.jsp</location> </error-page --> <error-page> <error-code>500</error-code> <location>/WEB-INF/tiles/panel/basic/httpInternalErrorLayout.jsp</location> </error-page> <session-config> <session-timeout>1440</session-timeout> </session-config> </web-app>
struts.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.action.extension" value="" /> <constant name="struts.multipart.maxSize" value="5097152" /> <package name="struts-hoge" namespace="/hoge" extends="struts-default"> <result-types> <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" /> <result-type name="redirect" class="org.apache.struts2.result.ServletActionRedirectResult" /> </result-types> </package> <package name="json-hoge" namespace="/hoge" extends="json-default"> <result-types> <result-type name="json" class="org.apache.struts2.json.JSONResult"/> </result-types> <interceptors> <interceptor name="json" class="org.apache.struts2.json.JSONInterceptor"/> </interceptors> </package> </struts>
IndexActionクラス
package jp.co.company.basic.action.content; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import jp.co.company.basic.action.content.base.AbstractBasicAction; import jp.co.company.common.manager.SystemSettingManager; import jp.co.company.common.struts.AbstractNormalAction; @ParentPackage(value=AbstractNormalAction.PARENT_PACKAGE) @Results ({ @Result(name = IndexAction.INPUT, location="/WEB-INF/content/index.jsp") }) public class IndexAction extends AbstractBasicAction { @Override public void subBasicPrepare() throws Exception { } @Override public String subBasicExecute() throws Exception { return INPUT; } }
IndexActionクラスの親クラス
package jp.co.company.common.struts; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.Preparable; import jp.co.company.common.log.ThermoLogger; import jp.co.company.common.manager.SystemSettingManager; import jp.co.company.common.manager.session.SessionManager; import jp.co.company.dao.db.User; @ParentPackage(value=AbstractNormalAction.PARENT_PACKAGE) @Results ({ @Result(name = ActionSupport.ERROR, location="/WEB-INF/content/error.jsp") , @Result(name = AbstractNormalAction.SESSION_ERROR, location = "index", type = "redirect") , @Result(name = AbstractNormalAction.PERMISSION_ERROR, location = "index", type = "redirect") }) public abstract class AbstractNormalAction extends ActionSupport implements Preparable { public static final String PARENT_PACKAGE = "struts-hoge"; public static final String NS_THERMO = "/hoge"; protected static final String SESSION_ERROR = "session-error"; protected static final String PERMISSION_ERROR = "permission-error"; public AbstractNormalAction() { } @Override public final void prepare() throws Exception { this.subPrepare(); }; public abstract void subPrepare() throws Exception ; @Override public String execute() throws Exception { String res = this.subExecute(); return res; } protected abstract String subExecute() throws Exception; }
環境は下記の通りです。
Windows10
Eclipse
Java 1.7
Tomcat 8.0
不足している情報があればご指摘ください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。