今天在用到Struts開(kāi)發(fā)一個(gè)應(yīng)用的時(shí)候遇到錯(cuò)誤:
exception
javax.servlet.ServletException: Cannot retrieve mapping for action /showProLists
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.apply.showProList_jsp._jspService(showProList_jsp.java:193)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
起初,懷疑是:struts-config.xml里的action配置錯(cuò)誤,后來(lái)仔細(xì)檢查,發(fā)現(xiàn)無(wú)錯(cuò)誤,排除此疑!
用到的action:
public class ShowProListAction extends Action {
??? public ActionForward execute(ActionMapping mapping,
???????????????????????????????? ActionForm actionForm,
??????????????????????????????? HttpServletRequest request,
???????????????????????????????? HttpServletResponse Response) {
????? // ShowProListForm form = (ShowProListForm)actionForm;
??????
?????? String temp=request.getParameter("testSecID");
?????? int ID=Integer.parseInt(temp);
?????? System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"+ID);
?????? ShowProListDAO prolistDAO=new ShowProListDAO();
?????? ArrayList arr=new ArrayList();
?????? arr=prolistDAO.getProList(ID);
?????? if(arr==null){
?????????? return mapping.findForward("null");
?????? }
?????? if(arr !=null){
?????????? if(arr.size()==0){
?????????????? return mapping.findForward("null");
?????????? }
?????????? else{
?????????????? request.setAttribute("showProList",arr);
?????????????? request.setAttribute("stationID",temp);
?????????????? ArrayList proList=(ArrayList)request.getAttribute("showProList");
?????????????? for(int i=0;i<proList.size();i++){
?????????????? ShowProList projects=(ShowProList)proList.get(i);
?????????????? System.out.println(projects.getProjectName());
?????????????? }
?????????????? System.out.println(temp);
?????????????? return mapping.findForward("success");
?????????? }
?????? }
return mapping.findForward("fail");
??? }
}
System.out.println(temp)和System.out.println(projects.getProjectName());
均正常輸出。懷疑,return mapping.findForward("success")懷疑這一步跳轉(zhuǎn)錯(cuò)誤?
修改過(guò)若干遍struts-config.xml文件,依舊未果!!!!!
最后,dxian來(lái)幫忙檢查,發(fā)現(xiàn)實(shí)際上,該action類,完全通過(guò)了。是在跳轉(zhuǎn)到下個(gè)jsp頁(yè)面后,jsp頁(yè)面里有一表單form:
部分代碼如下:
<html:form action="showProLists" method="post">showProListAction.do
<br><br>
<%
ArrayList proList=(ArrayList)request.getAttribute("showProList");
%>
因?yàn)椋瑒傞_(kāi)始寫該jsp頁(yè)面時(shí),是copy了一個(gè)過(guò)來(lái)直接改的,忘記把里的form去掉!結(jié)果,發(fā)生了錯(cuò)誤!
至此,該問(wèn)題解決!先前都沒(méi)遇到過(guò)這個(gè)情況,花了好多時(shí)間在這個(gè)上面。
末了,要感謝下幫過(guò)我無(wú)數(shù)次的 dxian:)