奇怪的问题:Struts2的There is no Action mapped for action name ...
是在更新页面提交的时候报的错,有点长,希望能耐心看完
错误提示如下:
There is no Action mapped for action name company. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
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:58)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:475)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
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:127)
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:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:864)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665)
at java.lang.Thread.run(Thread.java:662)
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>
<package name="system" namespace="/system" extends="common" >
<include file="common.xml"></include>
<action name="*" class="{1}Action">
<result name="index">/org/index.jsp</result>
<result name="add_input">/org/{1}_add_input.jsp</result>
<result name="update_input">/org/{1}_update_input.jsp</result>
<result name="add_success">/org/{1}_add_success.jsp</result>
<result name="update_success">/org/{1}_update_success.jsp</result>
<result name="del_success">/org/{1}_del_success.jsp</result>
</action>
</package>
</struts>
common.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.configuration.xml.reload" value="true"></constant>
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
<constant name="struts.devMode" value="false" />
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<package name="common" extends="struts-default" abstract="true">
<interceptors>
<interceptor-stack name="oa-stack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="debugging"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven">
<param name="refreshModelBeforeResult">true</param>
</interceptor-ref>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="multiselect"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*,pager\.offset</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="oa-stack"></default-interceptor-ref>
<global-results>
<result name="error">/common/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="error" exception="java.lang.Exception"/>
</global-exception-mappings>
</package>
</struts>
company_update_input.jsp的form表头部分代码:
<form action="system/company!update.action" method="post" >
<!-- <input type="hidden" name="method:update" value=""> -->
action部分我用的是spring注入的;
package com.oa.web.action;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.oa.model.Company;
@Controller("companyAction")
@Scope("prototype")
public class CompanyAction extends PartyAction {
@Override
public Object getModel() {
if(model == null){
model = new Company();
}
return model;
}
}
主要的partyAction主要代码如下,都贴上来的话太长了:
@Controller("partyAction")
@Scope("prototype")
public class PartyAction implements ModelDriven<Object>{
protected Party model;
public Object getModel() {
if(model == null){
model = new Party();
}
return model;
}
@Resource
private PartyService partyService;
//执行更新操作
public String update(){
partyService.updateParty(model);
return "update_success";
}
就是表单提交的时候无法识别company.action,party.action我试过了,没问题