张未必 2015-07-14 07:04 采纳率: 0%
浏览 2290
已结题

SSH Action 动态调用 参数 404异常

1. 异常情况:
1.  There is no Action mapped for namespace [/dd] and action name [laladList] associated with context path [/baee]. - [unknown location]
1.  at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
1.  at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
1.  at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
1.  at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
1.  at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:501)
1.  at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
1.  at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
1.  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

1. web.xml
1. <?xml version="1.0" encoding="UTF-8"?>
1. <web-app version="3.0" 
1.  xmlns="http://java.sun.com/xml/ns/javaee" 
1.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
1.  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
1.  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
1.  
1.  <display-name>项目名称</display-name>
1.  <description>项目描述</description>
1.  
1.  <jsp-config>  
1.         <taglib>  
1.             <!-- 配置标签的引用地址 JSP页面中引用时使用-->  
1.             <taglib-uri>/el-extends</taglib-uri>  
1.             <!-- 配置标签的TLD文件地址 -->  
1.             <taglib-location>/WEB-INF/ELExtends.tld</taglib-location>  
1.         </taglib>  
1.     </jsp-config> 
1.     
1.  <!-- 指示服务器在收到引用一个目录名而不是文件名的URL时,使用哪个文件 -->
1.  <welcome-file-list>
1.      <welcome-file>index.jsp</welcome-file>
1.  </welcome-file-list>
1.  
1.  <!-- 配置Session十分钟有效时间 -->
1.  <session-config>  
1.      <session-timeout>10</session-timeout>  
1.  </session-config>
1.  
1.  <!-- 配置错误页面 -->
1.  
1.     
1.     <!-- 将HibernateSession开关控制配置在Filter,保证一个请求一个session,并对lazy提供支持 -->
1.  <filter> 
1.      <filter-name>OpenSessionInViewFilter</filter-name>  
1.      <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class> 
1.  </filter> 
1.  
1.  <!-- 配置伪静态 -->
1.  <filter>
1.      <filter-name>UrlRewriteFilter</filter-name>
1.      <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
1.  </filter>
1.  
1.  <filter-mapping>
1.      <filter-name>UrlRewriteFilter</filter-name>
1.      <url-pattern>/*</url-pattern>
1.      <dispatcher>REQUEST</dispatcher>
1.      <dispatcher>FORWARD</dispatcher>
1.  </filter-mapping>
1.  
1.  <!-- 配置Struts2 -->
1.  <filter>
1.      <filter-name>struts2</filter-name>
1.      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
1.      <init-param>
1.          <param-name>config</param-name>
1.          <param-value>struts-default.xml,struts-plugin.xml,struts.xml</param-value>
1.      </init-param>
1.  </filter>
1.  
1.  <filter-mapping>
1.      <filter-name>struts2</filter-name>
1.      <url-pattern>/*</url-pattern>
1.      <dispatcher>FORWARD</dispatcher>
1.      <dispatcher>REQUEST</dispatcher>
1.  </filter-mapping>
1.  
1.  <!-- 配置Spring -->
1.  <context-param>
1.      <param-name>contextConfigLocation</param-name>
1.      <param-value>classpath:cn/baee/config/applicationContext.*.xml</param-value>
1.  </context-param>
1.  <listener>
1.      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
1.  </listener>
1.  
1.  <!-- log4j的配置文件里可以用${project}来表示刚刚设进去的系统变量 -->  
1.  <context-param>  
1.         <param-name>webAppRootKey</param-name>  
1.         <param-value>project</param-value>
1.     </context-param> 
1.     
1.  <!-- 配置由Sprng载入的Log4j配置文件位置 -->
1.  <context-param>
1.      <param-name>log4jConfigLocation</param-name>
1.      <param-value>/WEB-INF/classes/cn/baee/config/log.properties</param-value>
1.  </context-param>
1.  
1.  <!-- Spring刷新Log4j配置文件变动的间隔,单位为毫秒 -->
1.  <context-param>
1.      <param-name>log4jRefreshInterval</param-name>
1.      <param-value>10000</param-value>
1.  </context-param>
1.  <listener>
1.      <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
1.  </listener>
1.  
1.  <!-- 配置监听器 -->
1.  <listener>
1.      <listener-class>cn.baee.listener.IniListener</listener-class>  
1.  </listener>
1.  <listener>  
1.      <listener-class>cn.baee.listener.ReportsListener</listener-class>  
1.  </listener>
1.  <listener>
1.      <listener-class>cn.baee.listener.CountsListener</listener-class>  
1.  </listener>
1. </web-app>
1. 
1. struts.xml
1. <?xml version="1.0" encoding="UTF-8" ?>
1. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
1. 
1. <struts>
1.  
1.  <!-- 加载国际资源文件 -->
1.  <constant name="struts.custom.i18n.resources" value="cn.baee.config.langResource"></constant>
1.  
1.  <!-- 将Action的创建交给spring来管理 -->  
1.  <constant name="struts.objectFactory" value="spring" />
1.  
1.  <!-- 去掉struts2请求后缀  -->
1.  <constant name="struts.action.extension" value=","></constant>
1.  
1.  <package name="dd" namespace="/dd" extends="struts-default">
1.      <action name="*List?id=*" method="{1}" class="OrderActionBean" >
1.          <param name="id">{2}</param>
1.          <!--<param name="indexPage">{2}</param>-->
1.          <result name="success" type="redirectAction">
1.              <param name="actionName">cc</param>
1.          </result>
1.      </action>
1.  </package>
1.  
1.  <package name="root" namespace="/" extends="struts-default">
1.      <!-- 用户中心 -->
1.      <action name="i" method="i" class="UserCenterActionBean">
1.          <result name="signin">/user_center/signin.jsp</result>
1.          <result name="welcome">/user_center/welcome.jsp</result>
1.          <result name="system">/user_center/system.jsp</result>
1.          <result name="order">/user_center/order.jsp</result>
1.      </action>
1.      <action name="UserCenter*" method="UserCenter{1}" class="UserCenterActionBean">
1.          <result name="success" type="redirectAction">
1.              <param name="actionName">i</param>
1.          </result>
1.      </action>
1.      
1.      <!-- 控制中心 -->
1.      <action name="cc" method="cc" class="ControlCenterActionBean">
1.          <result name="signin">/control_center/signin.jsp</result>
1.          <result name="welcome">/control_center/welcome.jsp</result>
1.          <result name="system">/control_center/system.jsp</result>
1.          <result name="order">/control_center/order.jsp</result> <!-- 订单页 -->
1.          <result name="order_list">/control_center/order_list.jsp</result> <!-- 订单列表 -->
1.      </action>
1.      <action name="ControlCenter*" method="ControlCenter{1}" class="ControlCenterActionBean">
1.          <result name="success" type="redirectAction">
1.              <param name="actionName">cc</param>
1.          </result>
1.      </action>
1.      <action name="ControlCenter*?id=*" method="ControlCenter{1}" class="ControlCenterActionBean">
1.          <param name="id">{2}</param>
1.          <result name="success" type="redirectAction">
1.              <param name="actionName">cc</param>
1.          </result>
1.      </action>
1.      
1.      
1.      <!-- 订单 -->
1.      <action name="*Order?id=*;sn=*" method="{1}" class="OrderActionBean">
1.          <param name="id">{2}</param>
1.          <param name="sn">{3}</param>
1.          <result name="success" type="redirectAction">
1.              <param name="actionName">cc</param>
1.          </result>
1.      </action>
1.      
1.      <action name="*List?indexPage=*" method="{1}" class="OrderActionBean" >
1.          <param name="indexPage">{2}</param>
1.          <result name="success" type="redirectAction">
1.              <param name="actionName">cc</param>
1.          </result>
1.      </action>
1.      <!-- 订单列表 -->
1.      <action name="*OrderList?orderBusinessId=*;orderSourceTypeId=*;orderStateId=*;indexPage=*" method="{1}" class="OrderActionBean">
1.          <param name="orderBusinessId">{2}</param>
1.          <param name="orderSourceTypeId">{3}</param>
1.          <param name="orderStateId">{4}</param>
1.          <param name="indexPage">{5}</param>
1.          <result name="success" type="redirectAction">
1.              <param name="actionName">cc</param>
1.          </result>
1.      </action>
1.      
1.  </package>
1.  
1.  <!-- BAEE Action -->
1.  <package name="baee" namespace="/Be" extends="struts-default">
1.      <action name="SiteInitialize" method="Site" class="InitializeActionBean"></action>
1.      <action name="PageInitialize?pageAction=*;errorTextCode=*;illegalTextCode=*" method="Page" class="InitializeActionBean">
1.          <param name="pageAction">{1}</param>
1.          <param name="errorTextCode">{2}</param>
            <param name="illegalTextCode">{3}</param>
            <result name="success" type="dispatcher">
                <param name="location">/cc</param>
            </result>
        </action>
        <action name="BugInitialize" method="Bug" class="InitializeActionBean"></action>
    </package>
</struts>

action java

package cn.baee.action;
@SuppressWarnings("serial")
public class OrderAction extends GenericAction {
    private String id; // 订单Id
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public void lalad() throws Exception {
        System.out.println("lalad()被执行到了" + this.getId());
        //return null;
    }
}



问题描述:
(1)<s:action name="laladList?id=2" executeResult="true" namespace="/dd"/>
(2)http://localhost:8080/baee/dd/laladList?id=2
执行(1)语句的时候没有任何问题,控制台输出了相应的东西,表示我的配置没有任何问题可以正常运行。
执行(2)直接在浏览器访问这个网址的时候却出现了上面的异常,控制台也没有输出,表示根本没有到Acion的这个方法里。
我要实现的效果是利用标签访问Action我指定的这个方法并且可以动态传递参数给它,所有我直接编写了绝对路径去访问这个Action 但是不行,我就很疑惑了,百度了一圈还是解决不了。
附加:如果我没传递任何参数、类似于直接访问(http://localhost:8080/baee/dd/laladList)是可以正常运行的,但是我动态传递了参数进去 就是出现上面的404 找不到这个ACTION的异常。

疑惑1:我思考了半天就是不解了,(1)(2)按理说执行的都是一模一样的东西,连参数都是一样的 为什么在<s:action>就能成功执行呢?难道就因为它指定了一个namespace?
疑惑2:在疑惑1基础上,既然是因为没有指定namespace那么为什么没有带任何参数的时候,两种访问都能成功的访问到我指定的Action的指定方法()呢?

求大神帮解决。。。。
  • 写回答

10条回答 默认 最新

  • threenewbee 2015-07-14 07:14
    关注

    这个问题好像昨天有人问了。

    参考下:http://blog.csdn.net/xh16319/article/details/8042285

    评论

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突