今天在用到Struts開發一個應用的時候遇到錯誤:
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配置錯誤,后來仔細檢查,發現無錯誤,排除此疑!
用到的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")懷疑這一步跳轉錯誤?
修改過若干遍struts-config.xml文件,依舊未果!!!!!
最后,dxian來幫忙檢查,發現實際上,該action類,完全通過了。是在跳轉到下個jsp頁面后,jsp頁面里有一表單form:
部分代碼如下:
<html:form action="showProLists" method="post">showProListAction.do
<br><br>
<%
ArrayList proList=(ArrayList)request.getAttribute("showProList");
%>
因為,剛開始寫該jsp頁面時,是copy了一個過來直接改的,忘記把里的form去掉!結果,發生了錯誤!
至此,該問題解決!先前都沒遇到過這個情況,花了好多時間在這個上面。
末了,要感謝下幫過我無數次的 dxian:)