There is no Action mapped for namespace / and action name yyxkbAction. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:177)
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:47)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:458)
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.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:102)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
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:128)
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:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
-------------------------------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>
<include file="struts-default.xml" />
<constant name="struts.objectFactory" value="spring"></constant>
<!-- 设置Action访问时的扩展名 -->
<constant name="struts.action.extension" value="php,htm,action" />
<!-- 开发模式,提供更友好的排错信息和自动重新加载配置文件 -->
<constant name="struts.devMode" value="true" />
<package name="default" extends="struts-default"> <!--运营现况信息  on -->
<action name="YyxkbAction" class="YyxkbAction" >

<result name="set">/manager/tab/yyxkb/yyxkbEdit.jsp</result>
<result name="list">/manager/tab/yyxkb/yyxkbList.jsp</result>
<result name="add">/manager/tab/yyxkb/yyxkbUpdate.jsp</result>


<interceptor-ref name="defaultStack" />            <interceptor-ref name="token" />            <result name="invalid.token">/common/NoBack.jsp</result> 

</action>
 <!--运营现况信息  off -->

<!-- <result-type name="redirect-action" class="org.apache.struts2.dispatcher.ServletActionRedirectResult" /> -->

------------------------页面信息---------------------
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ include file="/common/taglibs.jsp" %>
<%
String path = request.getContextPath(); %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<TITLE>添加个人信息列表</TITLE> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<LINK href="<%=path %>/manager/tab/CSS/CssAdmin.css" rel=stylesheet>
<SCRIPT language=javascript src="<%=path %>/manager/tab/js/Admin.js"></SCRIPT>
<SCRIPT language=javascript src="<%=path %>/manager/tab/js/PopupCalendar.js"></SCRIPT>
<script type='text/javascript' src='<%=path %>/dwr/interface/department.js'></script> 
    <script type='text/javascript' src='<%=path %>/dwr/engine.js'></script>
<script type='text/javascript' src='<%=path %>/dwr/util.js'></script>   
<script type="text/javascript">
var oCalendarEn=new PopupCalendar("oCalendarEn"); //初始化控件时,请给出实例名称如:oCalendarEn
oCalendarEn.Init();
var oCalendarChs=new PopupCalendar("oCalendarChs"); //初始化控件时,请给出实例名称:oCalendarChs
oCalendarChs.weekDaySting=new Array("日","一","二","三","四","五","六");
oCalendarChs.monthSting=new Array("一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月");
oCalendarChs.oBtnTodayTitle="今天";
oCalendarChs.oBtnCancelTitle="取消";
oCalendarChs.Init();
</script>
<script type="text/javascript">function addStaff(){var staffNo=document.forms[0].staffNo.value;
var name=document.forms[0].name.value;
var ssbm=document.forms[0].ssbm.value;
var jobs=document.forms[0].jobs.value;
var bmPermissions=document.forms[0].bmPermissions.value;
var yyPermissions=document.forms[0].yyPermissions.value;
if(staffNo==""||staffNo==null){
alert("员工编号不能为空");
document.forms[0].staffNo.focus();
 return false;
}
if(isNaN(staffNo)){
alert("员工编号必须为数字");
document.forms[0].staffNo.focus();
 return false;
}
if(name==""||name==null){
alert("姓名不能为空");
document.forms[0].name.focus();
 return false;
}
if(ssbm==""||ssbm==null){
alert("所属部门不可以为空");
document.forms[0].ssbm.focus();
return false;
}
if(jobs==""||jobs==null){
alert("职位不可以为空");
document.forms[0].jobs.focus();
return false;
}
if(bmPermissions==""||bmPermissions==null){
alert("查看部门权限不可以为空");
document.forms[0].bmPermissions.focus();
return false;
}
if(jobs==""||jobs==null){
alert("管理运营权限不可以为空");
document.forms[0].jobs.focus();
return false;
}
document.forms[0].action="<%=path %>/staffAction!addStaff.action";
document.forms[0].submit();
}
function departmentService(){ 
alert("ddd");
      department.all(departmentList); 
     
    } 
   function departmentList(data){ 
   
 var selecid=document.getElementById("selecid");
   // 知道属性名称时,使用如下方法 
    for(var i=0;i<data.length;i++){ 
                   
                 arlet(data[i].bmbh);
               selecid.options.add(data[i].bmbh,data[i].bmname);
              } 
   
  }
     
   
   
</script>
</head><BODY oncontextmenu=self.event.returnValue=false >
<form action="" method="post">
<input name="method" type="hidden">
<TABLE cellSpacing=1 cellPadding=3 width="100%" bgColor=#6298e1
border=0>
<TBODY>
<TR>
<TD noWrap height=24>
<FONT color=#ffffff> <IMG height=18
src="<%=path %>/manager/tab/images/Explain.gif" width=18 align=Middle border=0>
&nbsp;<STRONG>个人信息查看:添加,修改,删除</STRONG> </FONT>
</TD>
</TR>
<TR>
<TD noWrap align="center" bgColor=#ebf2f9 height=24> <A onclick='changeAdminFlag("添加个人信息")' href="<%=path%>/manager/tab/staff/staffEdit.jsp">添加个人信息</A>
<FONT color=#0000ff>&nbsp;|&nbsp;</FONT>
<A onclick='changeAdminFlag("查看个人信息")' href="staffAction!findAll.action">查看个人信息</A> </TD>
</TR>
</TBODY>
</TABLE>
<br>
<TABLE cellSpacing=1 cellPadding=3 width="100%" bgColor=#6298e1
border=0>
<tbody>
<tr>
<td bgColor=#ebf2f9>
<br>
<table align="center" width="90%">
<tr>
<td>
员工编号:<input type=text name="staffNo" >
</td>
</tr>
<tr>
<td>
姓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名:<input type="text" name="name" >


</td>
         </tr>

<tr>
<td>
所属部门:<select name="ssbm" id=selecid >


</select>


</td>

         </tr>
<tr>
<td>
职&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;位:<input type="text" name="jobs">&nbsp;&nbsp;注册时间:<input readonly type="text" name="zctime" id="aa" onclick="getDateString(this,oCalendarChs)">

</td>

         </tr>
         <tr>
<td>
         查看部门权限:<select name="bmPermissions" >
         
        <option value="">-请选择查看部门权限-</option>
         <option value="1" selected>只能查看本人的信息</option>
         <option value="2">能查看本部门所有人的信息</option>
         <option value="3">能查看本部门所有人的信息并进行操作</option>
         </select>
          </td>

         </tr>
         <tr>
<td>
         管理运营权限:<select name="yyPermissions" >
         
         <option value="">-请选择管理运营权限-</option>
         <option value="1" selected>只能管理本人的系统</option>
         <option value="2">能查看所有人的系统</option>
         <option value="3">能查看所有人的系统并进行操作</option>
         </select>
         </td>

         </tr>
<s:token/>
<tr>
<td>
<input name="tijiao" type="button" onclick="addStaff()" value="提 交">
</td>
</tr>
</table>
</d>
</tr>
</tbody>
</TABLE>
</form>
</BODY>
</html>


</package>
</struts>
大侠,最好是解释一下package的namespace属性的详细作用和用法?我手头没资料,在网上找到的信息也看不懂,谢谢您的知识! 我的分不多,不会忘记您的恩情,谢谢!

解决方案 »

  1.   

    namespace是区分url目录的
    struts中package的包具有继承性,//这个区分什么的我也不知道
      

  2.   

    There is no Action mapped for namespace / and action name yyxkbAction<action name="YyxkbAction" class="YyxkbAction" > 
    对于namespace如果你加上了,那么你访问的路径就是这个namespace名加上你的action名,如果未指定,那就是你当前的要访问的action名。
    举个例子
    设置了包名的路径可能是这样的
    http://127.0.0.1:7001/WebRoot/Namespace/action
    而未设置包名的
    http://127.0.0.1:7001/WebRoot/action
    他就是区分的一个命名空间,和JAVA本身的包的含义类似
      

  3.   

    namespace有点像目录的意思,看你的struts.xml配置中跳转链接/manager/tab/yyxkb/yyxkbList.jsp。如果在这个yyxkbList.jsp中有个<a href="actionName.action">ddd</a>,它会找namespace为“/manager/tab/yyxkb/”下的actionName的配置。如果<a href="/actionName.action">ddd</a>就查找根目录(namespace为/)下的actionName的配置。
      

  4.   

    这个namespace除了这个继承性的  就好像目录一样的作用 还有别的什么性质么  我不写这个namespace  在页面上写上path不就好了么  那个也有这个作用的啊
      

  5.   

    我只知道c#中多用于namespace,是命名空间的意思。其实和package道理差不多。
    将类文件根据这个名字划分出层次,也为了避免命名冲突。