前提・実現したいこと
現在Struts2を学習しており、wellcomeページでボタンを押すとテキストフィールドにて書かれた文字が別ページにて表示されるアプリを作ろうとしています。
発生している問題・エラーメッセージ
タイプ ステータスレポート メッセージ There is no Action mapped for namespace [/] and action name [hello] associated with context path [/todo_app]. 説明 **オリジンサーバーは、ターゲットリソースの現在の表現を見つけられなかったか、またはそれが存在することを開示するつもりはありません。**
と表示され別ページに飛ぶことができません。
該当のソースコード
HelloActionjava
1public class HelloAction { 2 /** ロガー */ 3 private Logger logger = LogManager.getLogger(HelloAction.class); 4 5 /** 名前 */ 6 private String name; 7 8 public String execute() { 9 logger.info("入力されたパラメータは「{}」です。", name); 10 return "success"; 11 } 12 public String getName() { 13 return name; 14 } 15 16 public void setName(String name) { 17 this.name = name; 18 } 19 20 }
indexjsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2<!-- Struts2のタグライブラリを使用可能にする --> 3<%@ taglib prefix="s" uri="/struts-tags"%> 4<!-- タイプ宣言はHTML5のものを使用する --> 5<!DOCTYPE html> 6<html> 7 <head> 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 9 <title>トップページ</title> 10 </head> 11 <body> 12 <s:form action="hello"> 13 <s:textfield name="name" /> 14 <s:submit value="HelloWorldページへ行く" /> 15 </s:form> 16 </body> 17</html>
Strutsxml
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 <constant name="struts.devMode" value="true"></constant> 8 <package name="default" extends="struts-default"> 9 <!-- Hello worldのサンプルアクション --> 10 <action name="hello" class="sample.HelloAction" method="execute"> 11 <result name="success">/view/sample/HelloWorld.jsp</result> 12 </action> 13 </package> 14</struts>
webxml
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>todo_app</display-name> 7 <welcome-file-list> 8 <welcome-file>index.jsp</welcome-file> 9 </welcome-file-list> 10 11 <filter> 12 <filter-name>struts2</filter-name> 13 <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> 14 </filter> 15 16 <filter-mapping> 17 <filter-name>struts2</filter-name> 18 <url-pattern>/*</url-pattern> 19 </filter-mapping> 20</web-app>
HelloWorldjsp
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> 14``` 15 16![アプリケーションの改装](bc86be20e4301582fd495d2f6963c3fc.png) 17 18### 試したこと 19 20Strutsの改装を確認して、s:form actionとStruts.xmlのactionnameが同じことを確認しました。 21 22### 補足情報 23java11 24eclipse 2020-03 25##参考にさせてもらったページ 26> https://qiita.com/tarosa0001/items/889faa2ab5853005f26b#31-%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E6%BA%96%E5%82%99
回答2件
あなたの回答
tips
プレビュー