主页面能展现出来,提交后找不到sum这个Action,不知道为什么,请各位大大看下
主页面Sum.jsp如下:<body>
  求代数和
  <br/>
  <s:form action="sample/sum.action" >
    <s:textfield name="operand1" label=" 操作数1"/>
    <s:textfield name="operand2" label=" 操作数2" />
    <s:submit value="代数和" />
  </s:form>
</body>Sum.jsp\Positive.jsp\Pegative.jsp 在同一目录sample下,sample在应用根目录下struts.xml配置如下,该文件在classes下:<?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="struts2" namespace="/sample" extends="struts-default">
    <action name="sum" class="com.struts.action.SumAction">
      <result name="positive">/Positive.jsp</result>
      <result name="negative">/Pegative.jsp</result>
    </action>
  </package>
</struts>上面配置的com.struts.action.SumAction存在,路径无误
报错见下文:
警告: Could not find action or result
There is no Action mapped for action name sum. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:475)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)

解决方案 »

  1.   

    把action的代码贴出来吧,要不然还是不好判断
      

  2.   

    估计是Action里头的return没写对
      

  3.   

    action没写对,不应该导致找不着action吧,代码如下:package com.struts.action;import com.opensymphony.xwork2.ActionSupport;public class SumAction extends ActionSupport{

    private int operand1;
    private int operand2;

    public String execute()
    {
    if (getSum() >= 0) // 如果代码数和是非负整数,跳到positive.jsp页面
    {
    return "positive";
    }
    else // 如果代码数和是负整数,跳到negative.jsp页面
    {
    return "negative";
    }
    }

    public int getOperand1()
    {
    return operand1;
    }

    public void setOperand1(int operand1)
    {
    System.out.println(operand1);
    this.operand1 = operand1;
    }

    public int getOperand2()
    {
    return operand2;
    }

    public void setOperand2(int operand2)
    {
    System.out.println(operand2);
    this.operand2 = operand2;
    }

    public int getSum()
    {
    return operand1 + operand2; // 计算两个整数的代码数和
    } /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub }}
      

  4.   

    有那么一下几种情况:
    1.页面中action=“”里面尽量避免使用斜杠。()若使用请在struts中的default.properties中配置;
    2.action中的名与访问的action是否一致;
    3.配置文件中配置错误;
      

  5.   

    execute()函数要return SUCCESS..
      

  6.   

    调试一下。跟踪看看。是不是到ACTION类中return时出错了。
      

  7.   

    你把<package name="struts2" namespace="/sample" extends="struts-default">
    换成<package name="struts2" namespace="/" extends="struts-default">然后在页面提交的路径改成<s:form action="/sum.action" 》呢
      

  8.   

    已搞定:
    <s:form action="sample/sum.action" >修改为
    <s:form action="sum" namespace="/sample">,form需要指定命名空间,同时,在struts2里面sum后不需要带后缀.action