Для пространства имен / и имени действия не отображается действие
Я не могу выполнить свое приложение struts2. Я использую затмение Индиго IDE, Tomcat 7 и JDK 1,7.
JAR-файлы, которые я включил:
- Обще-каротаж 1.0.4.jar,
- FreeMarker-2.3.8.jar,
- ognl- 2.6.11.jar,
- struts2-ядро-2.0.11.jar,
- xwork-2.0.4.jar
Я разместил struts.xml
в папке классов в WEB-INF
и я также попробовал это поместить вsrc
папку, но я не смог сделать это. Я получаю приведенную ниже ошибку на консоли
There is no Action mapped for namespace / and action name tutorial. - [unknown location]
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="./tutorial.action">
Username: <input type="text" />
<input type="submit" value="Submit" />
</form>
</body>
</html>
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration
2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="tutorial" class="com.test.TutorialAction">
<result name="success">/success.jsp</result>
<result name="failure">/failure.jsp</result>
</action>
</package>
</struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-
app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Struts2Starter</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
TutorialAction.java
package com.test;
public class TutorialAction {
public String execute() {
System.out.println("Hello from execute");
return "success";
}
}
5 ответов
Как уже отмечали другие, у вас нет действия getTutorial в вашем отображении, только "учебник". Однако я собираюсь пропустить это и предложить вам научиться проверять работоспособность приложения Struts2. Каждый раз, когда вы настраиваете новую технологию, и даже когда вы работаете с знакомой технологией, очень полезно понять, как выполнить базовую проверку работоспособности - в этом случае вам необходимо убедиться, что ваши XML-файлы Struts успешно выполнены. разобрал и фреймворк знает о твоих действиях.
Я НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ вам добавить плагин Struts 2 Config Browser в ваши приложения Struts 2. Чтобы добавить плагин, вы просто получаете jar (все плагины Struts 2 являются jars) и помещаете его в каталог lib вашего веб-приложения. Вот и все. Когда вы начнете свою заявку, нажмите этот URL:
http://localhost:8080/starter/config-browser/index.action
И он показывает вам все действия, а также другие конфигурации, о которых фреймворк знает. Essentialy распоряжается 2 диагностическими инструментами и слишком прост в использовании, чтобы им не пользоваться.
Попробуйте это один раз, не добавляйте .action
<form action="tutorial">
поместите ваш файл struts.xml в src вне пакета или в папку классов WEB-INF.
Попробуй добавить namespace
приписать тебе package
элемент struts.xml
файл.
Как это:
<struts>
<package name="default" extends="struts-default" namespace="/">
<action name="tutorial" class="com.test.TutorialAction">
<result name="success">/success.jsp</result>
<result name="failure">/failure.jsp</result>
</action>
</package>
</struts>
Ошибка возникает из-за того, что сервер не может найти правильный путь для struts.xml . Лучше поместить файл struts.xml параллельно папке src или в WEB-INF/classes.
У меня была та же проблема, и я видел несколько сообщений об этом.... вот возможное решение
Я был почти уверен, что я точно отобразил все свои действия, но он показывал ту же ошибку выше.... так что я просто очистил проект, а затем снова запустил его... он работал отлично... попробуйте!
Я сталкивался с этим очень много раз... поэтому, чтобы избежать подобных вещей, я просто добавил "../eclipse.exe -clean" в свойство значка ярлыка.... это работает, и вы можете забыть о получении такого рода ошибки, которые на самом деле не являются ошибкой....!