论坛首页 Java企业应用论坛

struts跳转问题

浏览 7265 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-08-07  
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" class="com.yahaitt.web.CodecatalogAction"/>
</beans>


页面代码:
<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



不知道是什么原因?谢谢。
   发表时间:2007-08-07  
问题已经解决
主要原因是因为跳转的页面/admin/{1}Form.jsp里有这样一段代码 :
<html:form action="/codecatalog.do" focus="name" styleClass="form" onsubmit="return validateUserForm(this)">


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

这样就可以了。

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


0 请登录后投票
   发表时间:2007-08-11  
用了html标签以后,action对应的就是struts配置文件中的对应的映射。
在html标签里也不能使用jstl的标签,他们的作用域是不一样的。
0 请登录后投票
   发表时间:2007-08-12  
我觉得用struts标签很有局限性(我指html:*),有的时候还不如直接写html的元素,但出于规范,用struts标签还是有必要的.
0 请登录后投票
论坛首页 Java企业应用版

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