gpt4 book ai didi

java - 没有为命名空间/和操作名称 hello 映射的操作

转载 作者:行者123 更新时间:2023-11-30 09:16:07 24 4
gpt4 key购买 nike

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;
}
}

索引.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>

网络.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>

Hello World .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>

这段代码是我在 Struts 中为 hello World Example 编写的,但是我收到了错误:

HTTP 状态 404 - 没有为命名空间/和操作名称索引映射的操作。

我是 struts 的新手,并尝试了解 struts Mvc Framw 的工作,但我不知道我在这里做错了哪里遗漏了这个请帮助我如何修复它

最佳答案

  1. 使用新的过滤器

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

    代替旧的

    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
    org.apache.struts2.dispatcher.FilterDispatcher
    </filter-class>
    </filter>

    除非您使用的是非常旧的 Struts2 版本(例如 2.0)。

  2. 您的 web.xml 部署描述符一团糟:您说它是 3.0,然后链接 2.5 xmlns:web。

    如果您有 Servlet 3.0 容器 (Java EE 6),请使用:

    <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">

    如果您有 Servlet 2.5 容器 (Java EE 5),请使用:

    <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">
  3. 在包声明中指定命名空间,这样当您添加新包时就不会遇到问题:

    <package name="helloworld" extends="struts-default" namespace="/" >
  4. execute()不需要在Action config中指定方法,"success"不需要指定结果:

    <action name="hello" class="com.tutorialspoint.struts2.HelloWorldAction" >
    <result>/HelloWorld.jsp</result>
    </action>
  5. 如果可能,最好使用 HTML5 DOCTYPE 和 UTF-8 CharSet。

关于java - 没有为命名空间/和操作名称 hello 映射的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19537265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com