java - posicionar - No hay Acción asignada para el espacio de nombres/y el nombre de acción hola
eventos en un boton java (4)
package com.tutorialspoint.struts2;
public class HelloWorldAction{
private String name;
public String execute() throws Exception {
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
index.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>Hello World</title>
</head>
<body>
<h1>Hello World From Struts2</h1>
<form action="hello">
<label for="name">Please enter your name</label><br/>
<input type="text" name="name"/>
<input type="submit" value="Say Hello"/>
</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>
<constant name="struts.devMode" value="true" />
<package name="helloworld" extends="struts-default">
<action name="hello"
class="com.tutorialspoint.struts2.HelloWorldAction"
method="execute">
<result name="success">/HelloWorld.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>Struts 2</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<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>
</web-app>
HelloWorld.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
Hello World, <s:property value="name"/>
</body>
</html>
Este código tengo escrito para hola World Example In Struts Pero estoy obteniendo un error:
Estado de HTTP 404: no hay una acción asignada para el espacio de nombres / índice de nombre de acción.
soy nuevo en struts y trato de entender Struts Mvc Framw work Pero no sé, aquí estoy cometiendo un error donde me falta esto, por favor, ayúdame, cómo lo arreglaré
En su Struts.xml
que ha dado
<package name="helloworld" extends="struts-default">
Pruebe después de cambiarlo a
<package name="default" extends="struts-default">
Espero que esta respuesta resuelva el problema ...
Limpie su directorio de aplicaciones, pero lo más importante es que veo que le falta el espacio de nombres.
La entrada del paquete de muestra es enter code here
El nombre del paquete es un nombre lógico que usted proporciona, pero el espacio de nombres debe ser "/" o si hay algún otro contexto, entonces ese nombre
Usa el nuevo filtro
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter>
en lugar del anterior
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter>
a menos que esté utilizando una versión muy antigua de Struts2 (2.0, por ejemplo).
Su descriptor de despliegue web.xml está en mal estado: usted está diciendo que es 3.0 y luego vincula 2.5 xmlns: web.
Si tiene un contenedor Servlet 3.0 (Java EE 6), use:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
Si tiene un contenedor Servlet 2.5 (Java EE 5), use:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
Especifique el espacio de nombres en su declaración de paquete, de modo que cuando agregue nuevos paquetes no tendrá problemas:
<package name="helloworld" extends="struts-default" namespace="/" >
No es necesario especificar el método en Action config si es
execute()
, y no es necesario especificar el resultado si es"success"
:<action name="hello" class="com.tutorialspoint.struts2.HelloWorldAction" > <result>/HelloWorld.jsp</result> </action>
Es mejor utilizar HTML5 DOCTYPE y UTF-8 CharSet si es posible.
Para cualquier persona que aún tenga estos problemas, mire mi respuesta aquí .
Esto me ayudó después de luchar durante casi una hora. Seguí los tutoriales paso a paso y todavía obtuve el error.
Avíseme si ayudó. Feliz codificación :-)