提示:提问和回答别人的问题均可赢得积分
此问题已经被浏览377次,收藏:0次. 所属类别:[
JSP]
问题:Struts 跳转异常------DispatchMapping[/articleQuery] does not define a handler property?
Struts配置
<action
path="/articleQuery"
validate="false" >
<forward name="next" path="/show_article.jsp"/>
</action>
Spring配置
<bean name="/articleQuery" class="nuc.hailang.struts.article.ArticleAction">
<property name="articleService" ref="articleService"/>
</bean>
页面跳转
<td width="40%" align="center">
<html:link action="/articleQuery.do?name=${community.name}">
${community.name}
</html:link>
</td>
这个community是保存在request中的,能顺利取得
articleQueryAction
public class ArticleQueryAction extends Action {
private ArticleService articleService;
public void setArticleService(ArticleService articleService) {
this.articleService = articleService;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String name = request.getParameter("name");
System.out.println(name);
List list = articleService.queryByCommunity(name);
request.setAttribute("articles", list);
return mapping.findForward("next");
}
}
点那个链接进去就报异常
javax.servlet.ServletException: DispatchMapping[/articleQuery] does not define a handler property
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:176)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
nuc.hailang.util.SetCharacterEncoding.doFilter(SetCharacterEncoding.java:22)
哪位达人帮忙看看?感觉很简单的内容出现很奇异的问题。
提问时间:
2007-9-29 11:27:05 回答次数:
(14) 提问人:
软界网友 我来回答
回答(1)
class ArticleQueryAction extends Action
这个Action到底是 继承自 DispatchAction 还是Action
怎么看你的信息是Dispatch 的Action 没有指定相应的方法
回答(2)
<action
path="/articleQuery"
type呢~~~~~~~~~
validate="false" >
<forward name="next" path="/show_article.jsp"/ >
</action >
回答(3)
struts-config.xml中加入
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/bean-config.xml"/>
</plug-in>
用来和spring联系。
然后
<action
path="/articleQuery"
type=“org.springframework.web.struts.DelegatingActionProxy”
validate="false" >
<forward name="next" path="/show_article.jsp"/ >
</action >
用来将/articleQuery的请求代理到spring中进行。
回答(4)
回2楼
action交给spring管理
<controller>
<set-property property="processorClass"
value="org.springframework.web.struts.DelegatingRequestProcessor" />
</controller>
回答(5)
回lz,你交给spring处理也要把spring的代理写上的~~~
像3#那样就可以了~~
另外在spring的配置文件中要添加与这个action对应的bean
回答(6)
回楼上--加一个控制器就不用写type了
<controller >
<set-property property="processorClass"
value="org.springframework.web.struts.DelegatingRequestProcessor" / >
</controller >
回答(7)
我用的spring跟你们用法有些不同~
我不是把spring作为controller来引入的~
这样的话你再想扩展processor的话就比较费劲了~
我的做法是在web.xml中加载pring配置文件
<!-- contextConfigLocation 属性代表spring-config.xml文件的地址-->
<context-param>
<description> Spring2.0 Config </description>
<param-name> contextConfigLocation </param-name>
<param-value> /WEB-INF/config/spring-config.xml </param-value>
</context-param>
<!-- log4jConfigLocation 属性代表log4j.properties文件的地址-->
<context-param>
<param-name> log4jConfigLocation </param-name>
<param-value> /WEB-INF/config/log4j.properties </param-value>
</context-param>
<!-- 加上这个Spring的Log4j侦听类,注意在JBOSS里面,不需要这个类,注释掉,不然会冲突 -->
<listener>
<listener-class> org.springframework.web.util.Log4jConfigListener </listener-class>
</listener>
<!-- 加上这个Spring的侦听类 -->
<listener>
<listener-class> com.lr.daniel.dakcardsystem.server.web.ServiceContextListener </listener-class>
</listener>
===============================================================================
spring的侦听类是用来加载spring-config.xml文件的,也就是初始化spring~~
com.lr.daniel.dakcardsystem.server.web.ServiceContextListener
这个类继承自spring的org.springframework.web.context.ContextLoaderListener
,
我添加了一些自己要用到的必要代码~~
这样做的好处就是可以把struts的controller空出来做其他的处理~~
struts-config也不需要作特殊处理,只是把action的type设定为
type=“org.springframework.web.struts.DelegatingActionProxy”
就可以了~~
回答(8)
<action
path="/articleQuery"
validate="false" parameter="XXXX" >
<forward name="next" path="/show_article.jsp"/ >
</action>
把action配置加上红色部分试试
或者先不用Spring管理
定位一下问题
回答(10)
问题解决...
<bean name="/articleQuery" class="nuc.hailang.struts.article.ArticleAction" >
修改过一个bean,这里忘记改了...谢谢楼上的各位耐心指点
关键字:
lt,
gt,
param,
web,
path,
springframework,
value,
controller,
spanstyle,
apache,
FF0000,
color,
org,
type,
ActionServlet,
show_article