web.xml文件内容<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>CODEWeb</display-name>

    
     <filter>   
       <filter-name>struts2</filter-name>   
       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>   
   </filter>   
   
   <filter-mapping>   
       <filter-name>struts2</filter-name>   
       <url-pattern>/*</url-pattern>   
   </filter-mapping>

</web-app>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>
   <constant name="struts.custom.i18n.resources" value="message"></constant>

<constant name="struts.configuration.xml.reload" value="true"/>    
    
    <constant name="struts.i18n.encoding" value="GBK"/>
    
    <package name="code" extends="struts-default">
      
     
      
    
      <action name="StoreAction" class="com.quantong.wl.action.StoreAction">
            <result name="success">/storeMaster.jsp</result>   
            <result name="error">/storeMaster.jsp</result>     
     </action>
    
     <action name="ItemuomAction" class="com.quantong.wl.action.ItemuomAction">
            <result name="success">/uomMaster.jsp</result>  
             <result name="input">/uomMasterQuery.jsp</result>
            <result name="error">/uomMaster.jsp</result>  
     </action>
     
     <action name="StorebinAction" class="com.quantong.wl.action.StorebinAction">
            <result name="success">/storeBinMaster.jsp</result>   
            <result name="error">/storeBinMaster.jsp</result>     
     </action>
        
     <action name="MaterielItemAction" class="com.quantong.wl.action.MaterielItemAction">
            <result name="success">/materielItem.jsp</result>   
            <result name="error">/materielItem.jsp</result> 
            <result name="input">/materielItemQuery.jsp</result>    
     </action> 
        
     <action name="GoodsreceiptAction" class="com.quantong.wl.action.GoodsreceiptAction">
            <result name="success">/goodsReceipt.jsp</result>   
            <result name="error">/goodsReceipt.jsp</result> 
            <result name="input">/goodsReceipt.jsp</result>    
     </action>  
     
     <action name="MetalstripAction" class="com.quantong.wl.action.MetalstripAction">
            <result name="success">/management.jsp</result>   
            <result name="error">/management.jsp</result>   
     </action>
     
     <action name="MetalPhyicalAction" class="com.quantong.wl.action.MetalPhyicalAction">
            <result name="success">/metalPhysical.jsp</result>   
            <result name="error">/metalPhysical.jsp</result>  
            <result name="input">/metalPhysical.jsp</result> 
     </action>
     
     
     
     <action name="MetalChemicalAction" class="com.quantong.wl.action.MetalChemicalAction">
            <result name="success">/metalChemical.jsp</result>   
            <result name="error">/metalChemical.jsp</result>  
            <result name="input">/metalChemical.jsp</result> 
     </action>
     
    <action name="StockrequestAction" class="com.quantong.wl.action.StockrequestAction">
             <result name="success">/stockRequest.jsp</result>
             <result name="error">/stockRequest.jsp</result>
             <result name="input">/stockRequestQuery.jsp</result>
    </action>
     
        
        
    </package>
     
 </struts>action里的方法:
public String getMetalstripByPinYinCode(){
System.out.println("!!!!!!!!!!!!!!!!");
try {
MaterielitemEJBLocal materielitemEJBLocal=(MaterielitemEJBLocal) QueryJNDI.getEJB(MaterielitemEJBLocal.jndi);
String sql = "select ma from Materielitem ma where ma.pinyinCode ='"+pinYinCode+"'";
if(pinYinCode == null || pinYinCode.length()<=0){
addFieldError(pinYinCode, "没有查询条件,请填入拼音码");
return ERROR;
}else{
materielitemList=materielitemEJBLocal.getMaterielitemBySql(sql);
System.out.println(materielitemList.toString()+"2222222222222");
if(materielitemList.isEmpty()){
addFieldError(pinYinCode, "查询条件不匹配,无返回结果");
return ERROR;
}
}

} catch (NamingException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return INPUT;
}问题在于:我运行倒数第二个MetalChemicalAction时,没有该问题,但运行最后一个StockrequestAction时,就报出异常
There is no Action mapped for namespace / and action name StockrequestAction. - [unknown location]

解决方案 »

  1.   

    调用的时候请加<%=request.getContextPath()%>/MaterielItemAction.action试试
    另外
    <package name="code" extends="struts-default">
    改为
    <package name="code" extends="struts-default" namespace="/">
      

  2.   

    namespace的空间命名可以随意命名,但不写的话就会启用默认的命名空间,即你的项目名为命名空间,写的话要以“/”来开头;在你JSP页面里面的form里要注明namespace,不然程序会报找不到命名空间的错误。
      

  3.   

    你的程序怎么运行,运行时候URL是什么样子的。
      

  4.   

    估计jsp 页面的action form标签的action属性设置有误。。
    可以测试下直接用 链接访问action 的getMetalstripByPinYinCode方法。。
      

  5.   

    是不是StockrequestAction 这个类有问题,编译是否通过了?