一、问题:在struts1.2提交form表单时,报错!
1、jsp中功能描述:
<form action="login.do?method=updata">
.......
<input type="submit" value="更新"/>
</form>
2、struts-config.xml中描述:
<action path="/login"
name="personForm"
scope="request"
parameter="method"
type="org.springframework.web.struts.DelegatingActionProxy"
>
3、MyEclipse控制台异常描述:
2009-9-17 9:31:42 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
javax.servlet.ServletException: Request[/login] does not contain handler parameter named 'method'. This may be caused by whitespace in the label text.
at org.apache.struts.actions.DispatchAction.unspecified(DispatchAction.java:222)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:256)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
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:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:595)
二、解决方案:
确保配置无误后,在form提交时必须以“POST”方式提交,所以将提交方式改为:
<form action="login.do?method=updata" method="post">
这样问题就得以解决。
三、附加:根据异常信息:javax.servlet.ServletException: Request[/login] does not contain handler parameter named 'method'. This may be caused by whitespace in the label text.
此句翻译:提交参数那里可能某个标签有空格。
1、所以如果是以下这种情况也能发生同样错误信息:
<form action="login.do?(空格)method=updata" method="post">
或
<form action="login.do?method(空格)=updata" method="post">
//注意:(空格)表示一个空格,这样就报上边的异常了。(估计是该异常信息就描述的是此种情况)
2、其次:如果是<form action="(空格)login.do?method=updata" method="post">
或
<form action="login.do?method=updata(空格)" method="post">都没问题。
3、如果这样<form action="login.do?method=(空格)updata" method="post">
那么就会报:java.lang.NoSuchMethodException: com.summer.actions.PersonAction. updata(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
//找不到方法