求教一个关于struts2的问题

zgh_mnb 2013-04-28 10:58:51
使用是tomcat6.0 + struts2.0,struts.xml放在了src目录下
首先贴出错误信息如下:
java.lang.NullPointerException
org.apache.struts2.impl.StrutsActionProxy.getErrorMessage(StrutsActionProxy.java:69)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:500)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)

web.xml配置如下:

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<welcome-file-list>
<welcome-file>/category/main.jsp</welcome-file>
</welcome-file-list>

然后struts.xml配置如下:

<struts>

<include file="struts-authorize.xml"/>
<include file="struts-category.xml"/>
<include file="struts-cart.xml"/>
<include file="struts-order.xml"/>

<package name="dang-default" extends="json-default">

</package>

</struts>

其中main.jsp中初始化时使用ajax发送cat.action请求,代码部分如下:

$(function(){
$.get(
"cat.action",
function(data){
$("#left").html(data);
}
);
});


其中cat.action对应struts-category.xml,配置内容如下

<package namespace="/category" name="category-default" extends="dang-default">
<action name="cat" class="dangdang.actions.category.CategoryAction">
<result name="success">/category/category.jsp</result>
</action>
</package>

其中CategoryAction.java代码片段如下

/**
*...
*/
public String execute(){
ICategoryDAO dao=new DCategoryDAO();
cats=dao.findByid(1, true);
return "success";
}
/**
*...
*/



debug这个execute没执行,并且报上述异常,使用tomcat热部署,访问路径如http://localhost:8080/,直接跳转到main.jsp,求高手指教啊。
...全文
504 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_31206813 2015-10-17
  • 打赏
  • 举报
回复
我最近初学,struts框架搭载不起来,配置好后,eclipse不报错,前台的页面报空指针异常,每次都一样,这应该和楼主差不多, 我加了一个xwork-core-2.1.6.jar的包竟然好了,替换反而没用。感谢楼主!
  • 打赏
  • 举报
回复
命名空间的问题,我就遇到了,少写命名空间路径了。
  • 打赏
  • 举报
回复
命名空间的问题,我就遇到了。
zgh_mnb 2013-04-28
  • 打赏
  • 举报
回复
引用 11 楼 xarandy 的回复:
你先单独访问!cat.action看能访问到么?
直接抛上面那个500异常,后台没有异常信息。
幻想曲 2013-04-28
  • 打赏
  • 举报
回复
你先单独访问!cat.action看能访问到么?
zgh_mnb 2013-04-28
  • 打赏
  • 举报
回复
引用 7 楼 lvzg_005 的回复:
引用 5 楼 zgh_mnb 的回复:
[quote=引用 3 楼 zhaoli2315 的回复:] 你的错误信息没贴全,在错误信息里面应该可以找到哪行报错了
贴全了啊 这个不是后台跑出来的错误,是前台页面中显示出来的错误,就这么多错误信息
把后台的错误贴全[/quote]后台没有抛任何错误。。。
zgh_mnb 2013-04-28
  • 打赏
  • 举报
回复
引用 8 楼 xizhou704 的回复:
ajax提交的路径不对呀,少了namespace
如果我加上category/cat.action 就404了直接
xizhou704 2013-04-28
  • 打赏
  • 举报
回复
ajax提交的路径不对呀,少了namespace
lvzg_005 2013-04-28
  • 打赏
  • 举报
回复
引用 5 楼 zgh_mnb 的回复:
引用 3 楼 zhaoli2315 的回复:
你的错误信息没贴全,在错误信息里面应该可以找到哪行报错了
贴全了啊 这个不是后台跑出来的错误,是前台页面中显示出来的错误,就这么多错误信息
把后台的错误贴全
zgh_mnb 2013-04-28
  • 打赏
  • 举报
回复
引用 4 楼 splendid_java 的回复:
你的配置文件名称是struts.xml吗,还有它的位置在src吗
使用的是struts2+ 文件名就是struts.xml 放在src目录下的。
zgh_mnb 2013-04-28
  • 打赏
  • 举报
回复
引用 3 楼 zhaoli2315 的回复:
你的错误信息没贴全,在错误信息里面应该可以找到哪行报错了
贴全了啊 这个不是后台跑出来的错误,是前台页面中显示出来的错误,就这么多错误信息
ZHOU西口 2013-04-28
  • 打赏
  • 举报
回复
你的配置文件名称是struts.xml吗,还有它的位置在src吗
zhaoli2315 2013-04-28
  • 打赏
  • 举报
回复
你的错误信息没贴全,在错误信息里面应该可以找到哪行报错了
zgh_mnb 2013-04-28
  • 打赏
  • 举报
回复
合情合理不出结果,真是找不到原因了,你们有没有见过我这么素质的发帖提问人,不像有些人上来一堆代码一贴看的别人相帮他头都晕,为什么没人回复呢?~~
liyunxin0534 2013-04-28
  • 打赏
  • 举报
回复
没看出来什么问题,帮顶!
zzb13425138525 2013-04-28
  • 打赏
  • 举报
回复
断点,调试,看看是哪个位置报错了,还是直接连断点的代码块都没进去,那就估计是配置问题
zgh_mnb 2013-04-28
  • 打赏
  • 举报
回复
问题解决了,自己经过尝试,最后解决了,我把解决的步骤贴出来,以便希望对以后遇到这个问题的后来人有所帮助,步骤如下: 将使用的xwork-core-2.3.1.2.jar包替换为xwork-core-2.1.6.jar,同时添加struts2-convention-plugin-2.1.8.1.jar 、struts2-embeddedjsp-plugin-2.1.8.1.jar、struts2-json-plugin-2.1.8.1.jar,为了缩小范围这几个报我挨个试了下,必须是这四个包的组合,我也很奇怪。 2.更改web.xml文件struts配置如下

<filter>
		<filter-name>StrutsFilter</filter-name>
		
		<!-- 
            <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
		 -->
       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
		 
	</filter>
3.此时访问不再报500,而是404,然后更改main.jsp的ajax请求如下:

$(function(){
	$.get(  //发json请求
		"category/cat.action",
		function(data){					 
           $("#left").html(data);
		}
	);
});
访问,然后OK,效果出来,断点正常走,数据读取成功。
dev.xiaowangye 2013-04-28
  • 打赏
  • 举报
回复
重写ActionSupport类的addActionError、addActionMessage、addFieldError方法,打个断点,看看错误信息是啥你就明白了。
zgh_mnb 2013-04-28
  • 打赏
  • 举报
回复
引用 18 楼 hwliu51 的回复:
<struts> 
  <include file="struts-authorize.xml"/>
  <include file="struts-category.xml"/>
  <include file="struts-cart.xml"/>
  <include file="struts-order.xml"/>
   
  <package name="dang-default" extends="json-default">
     
  </package>   
</struts>
在package内配置你在AJAX中调用的Action:CategoryAction result为
<result type="json"/>
试着按你说的把struts-category.xml改成这样了:

 <action name="cat" class="dangdang.actions.category.CategoryAction">
         <result type="json" />  
         <result name="success">/category/category.jsp</result>       
     </action>
zgh_mnb 2013-04-28
  • 打赏
  • 举报
回复
引用 19 楼 lxxc11 的回复:
空指针异常,肯定是某个实例为null,你确定excute()没执行,估计cats为null,所以报错了,在cats=dao.findByid(1, true);之前随便输出一点内容看看有没有执行到。
在execute方法第一行debug断点的,都没走断点。
加载更多回复(8)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧