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>
<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> | </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>
姓 名:<input type="text" name="name" >
</td>
</tr>
<tr>
<td>
所属部门:<select name="ssbm" id=selecid >
</select>
</td>
</tr>
<tr>
<td>
职 位:<input type="text" name="jobs"> 注册时间:<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属性的详细作用和用法?我手头没资料,在网上找到的信息也看不懂,谢谢您的知识! 我的分不多,不会忘记您的恩情,谢谢!
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>
<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> | </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>
姓 名:<input type="text" name="name" >
</td>
</tr>
<tr>
<td>
所属部门:<select name="ssbm" id=selecid >
</select>
</td>
</tr>
<tr>
<td>
职 位:<input type="text" name="jobs"> 注册时间:<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属性的详细作用和用法?我手头没资料,在网上找到的信息也看不懂,谢谢您的知识! 我的分不多,不会忘记您的恩情,谢谢!
struts中package的包具有继承性,//这个区分什么的我也不知道
对于namespace如果你加上了,那么你访问的路径就是这个namespace名加上你的action名,如果未指定,那就是你当前的要访问的action名。
举个例子
设置了包名的路径可能是这样的
http://127.0.0.1:7001/WebRoot/Namespace/action
而未设置包名的
http://127.0.0.1:7001/WebRoot/action
他就是区分的一个命名空间,和JAVA本身的包的含义类似
将类文件根据这个名字划分出层次,也为了避免命名冲突。