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的指定方法()呢?
求大神帮解决。。。。