最近项目中总是离奇的报下面的错误:

 
  
  1. 2012-5-22 18:15:21 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn  
  2. 警告: No configuration found for the specified action'athleteSignup/saveAthleteSignupBatch.action' in namespace: '/event'
  3. Form action defaulting to 'action' attribute's literal value.  
  4. 2012-5-22 18:15:21 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn  
  5. 警告: No configuration found for the specified action'athleteSignup/saveAthleteSignupBatch.action' in namespace: '/event'.
  6.  Form action defaulting to 'action' attribute's literal value. 

 之所以奇怪,就是因为虽然报错,但是不影响程序的执行!

但是,对于这种警告信息,看着还是很不爽,肯定是程序的某处隐蔽的错误!下面,我们一起来探讨下,怎么解决这个问题。

 

 
  
  1. 警告: No configuration found for the specified action'athleteSignup/saveAthleteSignupBatch.action' in namespace: '/event'.  

分析下这个错误提示:在namespace为'/event'的命名空间下面,没有找到名字为

'athleteSignup/saveAthleteSignupBatch.action'

的action,经过查找,发现,'/event'的namespace下面,确实是没有

'athleteSignup/saveAthleteSignupBatch.action'这个action的!

所以会提示没有找到这个action。

页面的代码如下:

 

 
  
  1. <s:form action="athleteSignup/saveAthleteSignupBatch.action" method="post" id="form1" name="form1"> 

Struts查找action的顺序如下:

首先有如下的请求:

 

项目的路径为

 
  
  1. http://localhost:8080/SportSys 

实际的请求路径如下:

 
  
  1. http://localhost:8080/SportSys/event/athleteSignup/saveAthleteSignupBatch.action  

所以前面多了个/event

当在/event的namespace下面没有找到'athleteSignup/saveAthleteSignupBatch.action'

这个action时,转去

 

所以请求的顺序为:先查找命名空间为/athleteSignup

然后请求名字为saveAthleteSignupBatch 的action,由于这个是存在的,所以程序依然是能够执行的!

知道了这样运行的,所以,

改为如下方式即可!加入"namespace"这个属性即可!

 
  
  1. <s:form namespace="/athleteSignup" action="saveAthleteSignupBatch" method="post" id="form1" name="form1">  

可以看出s:form这个标签和html的form标签的不同之处,

.action这个在s:form中是可以省略的!

 

 
  
  1. http://localhost:8080/SportSys/athleteSignup/saveAthleteSignupBatch.action