struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd"><struts>
<include file="struts-default.xml" />
<package name="com.struts.demo" extends="struts-default.xml">
<action name="HelloWorld" class="com.struts.demo.HelloWorld">
<result>/helloWorld.jsp</result>
</action>
</package>
</struts>
HelloWorld.javapackage com.struts.demo;import com.opensymphony.xwork2.ActionSupport;public class HelloWorld extends ActionSupport {
/**
 * 
 */

private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String execute() throws Exception {
// TODO Auto-generated method stub
name="Hello " + name;
return SUCCESS;
}}
sayHello.jsp
<%@ page language="java"  pageEncoding="GBK"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Say Hello</title>
</head>
<body>
<h4>
sayHello to
</h4>
<s:form action="HelloWorld.action">
   Name:<s:textfield name="name"></s:textfield>
<s:submit />
</s:form>
</body>
</html>
页面提交后异常信息  是  There is no Action mapped for namespace / and action name HelloWorld.百度上关于这个 的解决方案 铺天盖地  但没有找到适合的答案  struts.xml  存放在 src下面的 路径应该不会错   本人今天开始 学习 struts2     希望各位朋友 帮我看看  谢谢 

解决方案 »

  1.   

    <s:form action="HelloWorld.action">
      Name:<s:textfield name="name"></s:textfield>
    <s:submit />
    改成(把.action去掉)试试<s:form action="HelloWorld">
      Name:<s:textfield name="name"></s:textfield>
    <s:submit />
      

  2.   

    不行在加namespace看看<package name="com.struts.demo" extends="struts-default.xml" namespace="/" >
      

  3.   

    少了namespace了 
    听三楼的。
      

  4.   

    <package name="com.struts.demo" extends="struts-default">
            <action name="HelloWorld" class="com.struts.demo.HelloWorld">
                <result>/helloWorld.jsp</result>
            </action>
    去掉你的那个include标签对!~~~
      

  5.   

    这个真的很奇怪   去掉那个include 了 也是老样  <s:form action="HelloWorld.action">
    这个我后面没有那个 action 后缀 
      

  6.   

    namespace  加了 “/” 了  也不行 我真的无语 没想到这个 简单的helloworld 困扰了我这么久 
      

  7.   

    <package name="[color=#0000FF]com.struts.demo" extends="struts-default.xml">[/color]
    <s:form action="HelloWorld.action">
    <s:form action="com.struts.demo/HelloWorld.action">
      

  8.   

    <s:form method="post" action="HelloWorld">
    试试还有<package name="com.struts.demo" extends="struts-default.xml">
    这个name属性改个看看,别用你的包名,随便起个,比如就叫strutdemo
      

  9.   

    <%@ taglib prefix="s" uri="/struts-tags"%>
    试试把Uri路径‘/’去掉,看看行不!
      

  10.   

    在package 上加上namespace=“/”这个属性就可以了啊
      

  11.   

    你的<package name="com.struts.demo"  namespace="/?">
    应该是少了namespace吧,的,
     那你访问的路径是什么呢?
    如果照你所说访问路径应该是 ../?/HelloWorld
      

  12.   

    我也出现几乎同样的问题,我的环境:
    JDK 1.6
    TOMCAT 5.5
    ECLIPSE 3.2
    struts 2.1.8.1(也试过struts 2.0.14)
    -------------------------------------------------
    试过了楼上各位说的所有方法,都不能解决。。
    期待大虾来解惑,不胜感激!!!
      

  13.   

    不要用自定义标签,直接用html的from提交试试,
      

  14.   

    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">
     <!-- 指定struts2配置的根元素 -->
     <struts>
     <!-- 指定Action的路径 -->
     <package name="com.struts.demo" extends="struts-default">
     <action name="HelloWorld" class="com.struts.demo.HelloWorld">
     <result >/sayHello.jsp</result>
     </action>
     </package>
     </struts> 
    HelloWorld.java
    package com.struts.demo;import com.opensymphony.xwork2.ActionSupport;public class HelloWorld extends ActionSupport{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private String name; public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    } public String execute() throws Exception {
    name="Hello!  "+name;
    return SUCCESS;
    }

    }sayHello.jsp<%@ page language="java" pageEncoding="utf-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Say Hello</title>
    </head>
    <body>
    <h4>
    sayHello to
    </h4>
    <s:form action="HelloWorld" >
      Name:<s:textfield name="name"></s:textfield>
    <s:submit />
    </s:form>
    </body>
    </html>web.xml<?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
      <welcome-file-list>
        <welcome-file>sayHello.jsp</welcome-file>
      </welcome-file-list>
      <!-- struts2的核心技术 -->
    <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>我这里是成功运行的,没有配置web.xml的时候也是报错的,基本上是你的代码,没有特别的修改
    导入的包包运行的效果图成功显示这里请求的地址是HelloWorld.action
    不知道对你有没有帮助
      

  15.   

    补充,加入HelloWorld.jsp,只需将struts.xml中
    <result >/sayHello.jsp</result>
    改成:
    <result name="success">/HelloWorld.jsp</result>
    HelloWorld.jsp<%@ page contentType="text/html; charset=UTF-8" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <title>Hello</title>
      </head>
      <body>
      <h3><s:property value="name" /></h3>
      </body>
    </html>
      

  16.   

    <?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" namespace="/" extends="struts-default">  
      
             <action name="HelloWorld" class="com.struts.demo.HelloWorld">
                <result>/helloWorld.jsp</result>
            </action>    </package>
        
    </struts>配置文件中这么多足以、
    然后在地址栏中http://localhost:8080/项目名/action名
      

  17.   

    lz 问题解决了没有啊
    据我以前的经验,你肯定是把struts.xml的位置放错了
    应该把它放在你的class所在包外面的目录你完全可以找个例子,比对一下目录结构
      

  18.   

    对了  你配置那个web.xml没有 那个里面要添加上struts2的核心控制
    代码如下:<?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 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"> <!--配置Struts2-->
    <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>
    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    </web-app>
      

  19.   

    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
        "http://struts.apache.org/dtds/struts-2.1.7.dtd">注意版本...........2.17需要指定跳转方式:<result>/helloWorld.jsp</result>改为<result name="success">/helloWorld.jsp</result>
      

  20.   

    问题 我解决了    原来是 <package name="com.struts.demo" extends="struts-default.xml">应改成  <package name="com.struts.demo" extends="struts-default">
    去掉那个 .xml  谢谢大家了