前提・実現したいこと
https://qiita.com/tarosa0001/items/889faa2ab5853005f26b
こちらを参考にしてStruts2の学習をしており、index.jspは表示できるのですが
そこからHelloWorld.jspに遷移させることができません。
(そもそもActionが走らないようです)
設定ファイルでactionを呼び出せるよう設定しているはずなのですが・・・
原因がわかる方いましたらご教授お願い致します。
発生している問題・エラーメッセージ
エラーメッセージ type ステータスレポート メッセージ There is no Action mapped for namespace [/] and action name [hello] associated with context path [/Struts2Test]. 説明 The requested resource is not available.
該当のソースコード
struts.xml
xml
1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 4 "http://struts.apache.org/dtds/struts-2.0.dtd"> 5<struts> 6 <!-- アクションのパッケージ定義 --> 7 <package name="default" extends="struts-default"> 8 <!-- Hello worldのサンプルアクション --> 9 <action name="hello" class="sample.HelloWorldAction" method="execute"> 10 <result name="success">/view/sample/HelloWorld.jsp</result> 11 </action> 12 </package> 13</struts>
web.xml
xml
1<?xml version="1.0" encoding="UTF-8"?> 2<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://xmlns.jcp.org/xml/ns/javaee" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 5 id="WebApp_ID" version="3.1"> 6 <display-name>Struts2HelloWorld</display-name> 7 <welcome-file-list> 8 <!-- アプリケーションルートであクセした時の表示ファイル設定 --> 9 <!-- 必要はありませんが、今回はURLの入力間違いも防ぐため、index.jspのみとします。 --> 10 <welcome-file>index.jsp</welcome-file> 11 </welcome-file-list> 12 13 <!-- Struts2のサーブレットフィルタ --> 14 <filter> 15 <filter-name>struts2</filter-name> 16 <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> 17 </filter> 18 19 <!-- URLに対して使用するフィルタの設定 --> 20 <filter-mapping> 21 <filter-name>struts2</filter-name> 22 <url-pattern>/*</url-pattern> 23 </filter-mapping> 24</web-app>
HelloWorldAction.java
java
1package sample; 2 3import org.apache.logging.log4j.LogManager; 4import org.apache.logging.log4j.Logger; 5 6/** 7 * [HelloWorldのアクションクラス]<br> 8 * <br> 9 * @author tarosa0001 10 */ 11public class HelloWorldAction { 12 /** ロガー */ 13 private Logger logger = LogManager.getLogger(HelloWorldAction.class); 14 15 /** 名前 */ 16 private String name; 17 18 /** 19 * [アクション実行処理]<br> 20 * HelloWorldを出力する処理を実行する。<br> 21 * 実行するメソッドは、struts.xmlで指定したメソッド名を使用して実装する。<br> 22 * Struts2ではアクションの処理結果でページの遷移先を決定するが、 23 * 今回は"success"の固定文字列を返却する。<br> 24 * <br> 25 * @return 26 */ 27 public String execute() { 28 logger.info("入力されたパラメータは「{}」です。", name); 29 return "success"; 30 } 31 32 /** 33 * [名前取得処理]<br> 34 * 名前を取得します。<br> 35 * Struts2がフォームに入力された値をパラメータとしてする際、 36 * getterを使用するため、パラメータとして使用したい情報は、 37 * Actionクラスのプロパティとして宣言しておき、getterを用意する。 38 * <br> 39 * @return 名前 40 */ 41 public String getName() { 42 return name; 43 } 44 45 /** 46 * [名前設定処理]<br> 47 * 名前を設定します。<br> 48 * getter同様、ページ間で受け渡したい値はsetterを用意しておく。<br> 49 * <br> 50 * @param name 名前 51 */ 52 public void setName(String name) { 53 this.name = name; 54 } 55}
index.jsp
jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ taglib prefix="s" uri="/struts-tags"%> 4<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 5<html> 6<head> 7<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 8<title>index</title> 9</head> 10<body> 11 <s:form action="hello"> 12 <s:textfield name="name" /> 13 <s:submit value="helloworldページへ行く" /> 14 </s:form> 15</body> 16</html>
HelloWorld.jsp
jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2<%@ taglib prefix="s" uri="/struts-tags"%> 3<!DOCTYPE html> 4<html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Hello Struts2 world!</title> 8 </head> 9 <body> 10 <!-- メッセージの間に渡されたデータを表示します。 --> 11 Hello Struts2 world, <s:property value="name" />さん 12 </body> 13</html>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。