首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts跳转有关问题

2012-10-27 
struts跳转问题web.xml!-- Struts Action Mapping--servletservlet-nameaction/servlet-nameserv

struts跳转问题
web.xml

<!-- Struts Action Mapping--><servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><init-param><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml,/WEB-INF/modules/struts-config-admin.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>


struts-config-admin.xml

<form-beans><form-bean name="codecatalogForm" type="org.apache.struts.validator.LazyValidatorForm"/></form-beans><action-mappings><!--使用通配符,对/admin/ 进行批量配置--><action path="/admin/*" name="{1}Form" scope="request" parameter="method" validate="false"><forward name="list" path="/WEB-INF/pages/admin/{1}List.jsp"/><forward name="edit" path="/WEB-INF/pages/admin/{1}Form.jsp"/><forward name="success" path="/admin/{1}.do?method=list" redirect="true"/></action></action-mappings>


spring的action-servlet.xml

<beans default-autowire="byName" default-lazy-init="true"><bean name="/admin/codecatalog" name="code"><li><a href="admin/codecatalog.do">Codecatalog</a></li>


当点击这个链接后
进入页面:
:<a href="${ ctx }/admin/codecatalog.do?method=edit&id=1">Edit</a>
查看源代码为:
<a href="/searcher/admin/codecatalog.do?method=edit&id=1">Edit</a> //searcher为项目名


当点击Edit后报错误:org.apache.jasper.JasperException: Cannot retrieve mapping for action /codecatalog

跟踪了下代码, debug到
return mapping.findForward(LIST);


这句代码出错了。

也就是说:struts-config.xml里有没有配置/codecatalog映射,只配置了/admin/codecatalog映射,所以 报异常:
org.apache.jasper.JasperException: Cannot retrieve mapping for action /codecatalog



不知道是什么原因?谢谢。
<html:form action="/codecatalog.do" focus="name" styleonsubmit="return validateUserForm(this)">

这段代码用到了struts标签,会自动立即去struts-config.xml里找/codecatalog这个映射,而这个映射是不存在的,所以就报错了。
所以改为<html:form action="/admin/codecatalog.do" focus="name" styleonsubmit="return validateUserForm(this)">

这样就可以了。

这段代码的struts标签里的action也不能这样写:action="${ctx}/admin/codecatalog.do"
也就是说不能带${ctx}


2 楼 letle 2007-08-11   用了html标签以后,action对应的就是struts配置文件中的对应的映射。
在html标签里也不能使用jstl的标签,他们的作用域是不一样的。 3 楼 leeking 2007-08-12   我觉得用struts标签很有局限性(我指html:*),有的时候还不如直接写html的元素,但出于规范,用struts标签还是有必要的.

热点排行