Для пространства имен / и имени действия не отображается действие

Я не могу выполнить свое приложение 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" в свойство значка ярлыка.... это работает, и вы можете забыть о получении такого рода ошибки, которые на самом деле не являются ошибкой....!

Другие вопросы по тегам