论坛首页 入门技术论坛

有关spring中struts跳转的问题

浏览 2462 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-08-07  

1、两个配置文件(spring-config-admin.xml和struts-config-admin.xml)如下:

xml 代码
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <!---->>  
  3. <!---->  
  4. <beans default-autowire="byName" default-lazy-init="true">  
  5.  <bean name="/admin/codecatalog" class="com.yahaitt.web.CodecatalogAction"/>  
  6. beans>  
  7.   
  8. <!---->xml version="1.0" encoding="UTF-8" ?>  
  9. <!---->
  10.   "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"   
  11.   "http://struts.apache.org/dtds/struts-config_1_2.dtd">  
  12. <struts-config>  
  13.  <form-beans>  
  14.   <form-bean name="codecatalogForm" type="org.apache.struts.validator.LazyValidatorForm"/>  
  15.  form-beans>  
  16.   
  17.  <action-mappings>  
  18.   <!---->  
  19.   <action path="/admin/*" name="{1}Form" scope="request" parameter="method" validate="false">  
  20.    <forward name="list" path="/WEB-INF/pages/admin/{1}List.jsp"/>  
  21.    <forward name="edit" path="/WEB-INF/pages/admin/{1}Form.jsp"/>  
  22.    <forward name="success" path="/admin/{1}.do?method=list" redirect="true"/>  
  23.   action>  
  24.  action-mappings>  
  25. struts-config>  
  26.   

2、执行的ur:http://localhost:8080/yahaitt/admin/codecatalog.do

对应的jsp页面(/WEB-INF/pages/admin/codecatalogList.jsp)相关代码如下:

xml 代码
  1. <ec:table items="codecatalogs" var="codecatalog"  
  2.         action="${ctx}/codecatalog.do">  
  3.      <ec:exportXls fileName="CodecatalogList.xls" tooltip="Export Excel"/>  
  4.      <ec:row>  
  5.       <ec:column property="rowcount" cell="rowCount" sortable="false" title="序号" width="60"/>  
  6.       <ec:column property="name" title="名称" width="100"/>  
  7.       <ec:column property="shortname" title="标记" width="100"/>  
  8.       <ec:column property="null" title="Edit" width="40" sortable="false" viewsAllowed="html">  
  9.        <a href="codecatalog.do?method=edit&id=${codecatalog.id}">Edita>  
  10.       ec:column>  
  11.       <ec:column property="null" title="Remove" width="40" sortable="false" viewsAllowed="html">  
  12.        <a href="codecatalog.do?method=delete&id=${codecatalog.id}">Deletea>  
  13.       ec:column>  
  14.      ec:row>  
  15.     ec:table>  
  16.   

3、当点击“Edit”时执行了org.springside.core.web.StrutsEntityAction.java中的edit函数如下:

java 代码
  1. public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest request,   
  2.          HttpServletResponse response) {   
  3.   //防止重复提交的token   
  4.   saveToken(request);   
  5.   T object = null;   
  6.      
  7.   // 如果是修改操作,id!=null   
  8.   if (request.getParameter(idName) != null) {   
  9.    object = doGetEntity(form, request);   
  10.    if (object == null) {   
  11.     saveError(request, "entity.missing");   
  12.     return mapping.findForward(LIST);   
  13.    }   
  14.   } else {   
  15.    try {   
  16.     object = entityClass.newInstance();   
  17.    } catch (InstantiationException e) {   
  18.     log.error(e);   
  19.    } catch (IllegalAccessException e) {   
  20.     log.error(e);   
  21.    }   
  22.   }   
  23.   
  24.   initForm(form, request, object);   
  25.   refrenceData(request);   
  26.   return mapping.findForward(EDIT);   
  27.   
  28. //这里的EDIT的值为"edit"字符串   
  29.  }   
  30.   

这个函数能够执行,说明/admin/codecatalog.do配置成功的,断点跟踪,在执行完mapping.findForward(EDIT);时却报错:

Cannot retrieve mapping for action /codecatalog

也就是最后又去找/codecatalog这个配置去了,但是我没有用这个配置,很不明白的是为什么到了最后mapping.findForward(EDIT);时却要去找/codecatalog?

具体的代码和相关的文件在附件里,希望能得到指点,谢谢,该问题已经困惑我两天了。

 

   发表时间:2007-08-08  

此问题已经解决,问题出在跳转到的jsp中,在return mapping.findForward(EDIT)时,确实找到了对应的jsp,并执行,但是在这个jsp中有用指定action为“/codecatalog.do”这样用struts标签写的form,当JSP在执行到这里的时候会去检测这个action是否有匹配,如果没有的匹配的话就报错了,所以此处应该该为“/admin/codecatalog.do”,而且也不能写成“${ctx}/admin/codecatalog.do”

xml 代码
  1. <html:form action="/codecatalog.do" focus="name" styleClass="form" onsubmit="return validateUserForm(this)">  
  2.                     <input type="hidden" name="method" value="save"/>  
  3.                     <html:hidden property="id"/>  
  4.                     <table>  
  5.                         <tr>  
  6.                             <td><label>name:</label></td>  
  7.                             <td>  
  8.                                 <html:text property="name" styleClass="text"/>  
  9.                             </td>  
  10.                         </tr>  
  11.                         <tr>  
  12.                             <td><label>shortname:</label></td>  
  13.                             <td>  
  14.                                 <html:text property="shortname" styleClass="text"/>  
  15.                             </td>  
  16.                         </tr>  
  17.                     </table>  
  18.                     <div>  
  19.                         <html:submit property="saveBtn" styleClass="button">Save</html:submit>  
  20.                         <html:cancel styleClass="button">Cancel</html:cancel>  
  21.                     </div>  
  22.                 </html:form>  
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics