web-dev-qa-db-de.com

Es ist keine Aktion für Namespace [/] und Aktionsname [] zugeordnet, die dem Kontextpfad zugeordnet sind

Ich habe alle ähnlichen Qs auf stackoverflow durchgesehen, aber es hat nicht geholfen, sorry. Der Hauptunterschied, den ich von allen habe, ist, dass ich den Namen der LEEREN Aktion in der Fehlermeldung erhalten habe. Googeln hat nicht geholfen :( Hoffe, jemand kann nur einen Hinweis geben, wo man nach der Ursache des Problems sucht. Thx

Error:

HTTP Status 404 - There is no Action mapped for namespace [/] and action name [] associated with context path [/LoginApplication].

--------------------------------------------------------------------------------

type Status report

message There is no Action mapped for namespace [/] and action name [] associated with context path [/LoginApplication].

description The requested resource (There is no Action mapped for namespace [/] and action name [] associated with context path [/LoginApplication].) is not available.

WARNING: Could not find action or result: /LoginApplication/
There is no Action mapped for namespace [/] and action name [] associated with context path [/LoginApplication]. - [unknown location]
    at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.Java:185)
    at org.Apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.Java:63)
    at org.Apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.Java:37)
    at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.Java:58)
    at org.Apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.Java:552)
    at org.Apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.Java:77)
    at org.Apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.Java:99)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:243)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:210)
    at org.Apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.Java:240)
    at org.Apache.catalina.core.StandardContextValve.invoke(StandardContextValve.Java:164)
    at org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:462)
    at org.Apache.catalina.core.StandardHostValve.invoke(StandardHostValve.Java:164)
    at org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:100)
    at org.Apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.Java:562)
    at org.Apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.Java:118)
    at org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:395)
    at org.Apache.coyote.http11.Http11Processor.process(Http11Processor.Java:250)
    at org.Apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.Java:188)
    at org.Apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.Java:166)
    at org.Apache.Tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.Java:302)
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at Java.lang.Thread.run(Unknown Source)

web.xml

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://Java.Sun.com/dtd/web-app_2_3.dtd" >

<web-app>
<display-name>Struts 2 Web Application</display-name>

<filter>
<filter-name>struts2</filter-name>
<filter-
class>org.Apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-
class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

</web-app>

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.Apache.org/dtds/struts-2.3.dtd">

<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="true" />

<constant name="struts.custom.i18n.resources" value="ApplicationResources" />

<package name="user" namespace="/" extends="struts-default">
<!-- http://localhost:8080/Struts-Example/User/Login.action -->
<action name="login">
<result>/Pages/HomePage.jsp</result>
</action>

<action name="validatelogin" class="/LoginApplication/src/ValidateLogin"
method="execute">
<result name="Success">/Pages/Success.jsp</result>
<result name="Failure">/Pages/Failure.jsp</result>

</action>
</package>
</struts>

Seiten: HomePage.jsp

<%@ page language="Java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"      
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title>Validate Login</title>
</head>
<body>
<s:form action="login" method="execute">
<s:textfield name="username" key="Username" size="20" />
<s:password name="password" key="Password" size="20" />
<s:submit />
</s:form>
</body>
</html>

Success.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>

<head>
<title>Login Application - Authorized</title>
</head>

<body>
Congratulations, <s:property value="username" />!
Welcome to Struts 2 world.
</body>
</html>

Failure.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>

<head>
<title> Login Application - Unauthorized</title>
</head>

<body>
Sorry, You have entered an invalid Username / Password
</body>
</html>

ValidateLogin.Java

public class ValidateLogin 
{
public String username;
public String password;

public String getUsername() 
{
    return username;
}

public void setUsername(String username) 
{
    this.username = username;
}

public String getPassword() 
{
    return password;
}

public void setPassword(String password) 
{
    this.password = password;
}

public String execute() 
{
    if (this.username.equals("pinkesh") &&    
this.password.equals("pinkesh"))//((this.username.equals("pinkesh")) &   
(this.password.equals("pinkesh")))
        return "Success";
    else
        return "Failure";
}
}

nun, das Bild ist unmöglich. Die Projektstruktur lautet also:

src/
----ValidateLogin.Java
WenCOntent
-----+User
--------+Pages
------------+HomePage.jsp
------------+Success.jsp
------------+Failure.jsp
-----+web.xml
-----+struts.xml
3
pinkesh

Ich bekam auch einen ähnlichen Fehler. Die Lösung war, dass sich die Datei "struts.xml" im Ordner "web" befand.

Es muss sich im Quellordner "src" befinden.

Nehmen Sie die Änderung vor und starten Sie den Server neu.

5
happy

Dank an alle. Ich habe meine struts.xml wie folgt geändert, um die genannten Fehler und die Namenskonvention zu korrigieren und das Problem zu beheben.

<?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>
<constant name="struts.devMode" value="true" />

<package name="user" namespace="/User" extends="struts-default">
    <action name="login">
        <result>pages/HomePage.jsp</result>
    </action>

    <action name="ValidateLogin" class="com.user.struts.ValidateLogin" method="execute">
        <result name="SUCCESS">pages/Success.jsp</result>
        <result name="FAILURE">pages/Failure.jsp</result>
    </action>

</package>  
</struts>
1
pinkesh

Standardmäßig findet das Programm index.jsp.
Wenn Sie keinen index.jsp in Ihrem [/] -Verzeichnis haben, wird dieser Fehler auftreten.
Oder Sie müssen eine andere Datei in web.xml auswählen

Lösung :
Fügen Sie in Ihrem web.xml diesen Code unter filter-mapping hinzu.

<welcome-file-list>
        <welcome-file>/Pages/HomePage.jsp</welcome-file>
</welcome-file-list>
1
thangdc94

Ich weiß nicht, ob noch jemand dieses Problem hat, aber das habe ich getan-

Ändern Sie Ihren Paketnamen in der Klasse "helloaction.Java"

Die meisten Leute, einschließlich mir, schreiben einfach, wie sich ein Tutorial zeigt, und nach stundenlangem Debuggen bekam ich endlich das Problem.

package com.tutorialspoint.struts2;

Ich hatte die obige Zeile in meiner Action-Klasse (.Java) geschrieben. die ein Paket "com.tutorialspoint" in src Ordner gemacht. Tatsächlich bedeutet die Syntax jedoch, dass es in com package einen Tutorialpunkt für Pakete gibt. Also, was im Grunde genommen das Tutorial hatte, war

src->com->tutorialspoint->helloaction.Java

Nachdem ich von der ganzen Suche keine Lösung erhalten hatte, änderte ich den Namen meines Pakets in .Java class & struts.xml in "practice" und es funktionierte einwandfrei.

src->practice->helloaction.Java

Hoffentlich hat jemand den gleichen Fehler wie ich gemacht ... es hat geholfen. Es ist vielleicht nicht die Lösung, aber es hat bei mir funktioniert, als alles andere nicht geklappt hat.

1
Natasha

Erfahren Sie zunächst, wie Sie eine Klasse in struts.xml angeben.

class = "/ LoginApplication/src/ValidateLogin" ist eine falsche Angabe

<action name="validatelogin" class="/LoginApplication/src/ValidateLogin" <- this is wrong 
  method="execute">
     <result name="Success">/Pages/Success.jsp</result>
     <result name="Failure">/Pages/Failure.jsp</result>
</action>

Sie sollten es korrigieren und class="ValidateLogin" schreiben, wenn der Dateiname ValidateLogin.Java ist.

Wenn sich die Java-Klassendatei in einem Paket befindet, sollte dies der Fall sein

class="yourPackageName.ValidateLogin"
0
Mr. P

nehmen Sie die Änderungen in der Datei struts.xml vor. <package name="default" namespace="/" extends="struts-default"> Fügen Sie das Attribut namespace="/" im Paket hinzu

0

Ich bekam auch den gleichen Fehler. Das Problem wurde behoben, indem der Speicherort struts.xml in das Stammverzeichnis des Ordners src im Eclipse-Projekt verschoben wurde

0
Lukman

die Datei struts.xml muss sich im Ordner "WebContent/WEB-INF/classes /" befinden.

0
Parth Patel