`
guimingyue
  • 浏览: 75748 次
  • 性别: Icon_minigender_1
  • 来自: 湖北
社区版块
存档分类
最新评论

关于struts2中No result defined for action这个异常的解决思路

    博客分类:
  • Java
阅读更多
    昨天晚上俺想到有一个功能没做,就想做一下!由于这个功能以前做过,很快就写出来了,于是就部署,debug tomcat!但是在测试的时候,却总是报No result defined for action异常,检查了一个小时,而且把以前写的代码夜拿出来对照,还是没有发现错误原因,只能放弃!今天早上起床就开始上Google搜这个,虽然网上很多这样的错误,但是看了好多都没能解决这个问题,所以就按照网上的帖子先加了一个result中name为input的结果:
<result name="input">/WEB-INF/page/error/error.jsp</result>
,还在error.jsp中加了一个
<s:debug></s:debug>
代码,由于对struts2掌握的也不太好,从debug的stacktrace中也没看出什么,所以只能继续上Google搜,然后再在自己的代码中修修补补,发现按要执行的manage/store/storeType_online(使用了通配符)中在StoreAction中的online方法竟然没只能,而是执行的该类的另一个方法
public String getStoreDetail() {
		store = storeService.find(storeid);
		return "storedetail";
	}
由于没有传递storeid这个参数,就报了错误,所以俺把上述方法注释掉了,这个时候再做测试,进入了error.jsp页面,从堆栈中没看出啥问题。又到网上以“struts2  方法没执行”搜,在http://blog.csdn.net/gavin812428144/archive/2010/03/27/5422220.aspx页面中看到了如下文字
今天提交表单时发现action中的execute()方法没有执行,但是validate()却执行了,而且并没有报任何错,执行完之后,就直接退出了,程序并没有进入execute()。

      几经调试,发现validate()返回的resultCode为INPUT,说明并没有通过验证。究竟是什么原因导致验证不通过呢?!郁闷了半天,最后突然想起,我所提交的表单中有个type="file"的input,即我是准备上传文件的,然而我忘了将form的enctype属性改成"multipart/form-data"。貌似找到了问题,赶紧重试,结果果然如预料的,正是这个问题导致了表单提交失败,execute()未被执行。

      如果大家遇到类似问题,不妨看看你的form的enctype,希望此次经历对大家有用。
,才知道INPUT的结果是没有通过验证的返回结果(基础没掌握好,就是浪费时间)。所以怀疑是form提交的数据没有通过struts2默认的验证,只能再上Google搜,找到了这个页面http://blog.csdn.net/yby0260/archive/2010/08/18/5822312.aspx
当我们在使用struts2自带的验证框架来验证表单字段时,需要在页面上显示错误提示信息,一般我们是在页面上添加<s:fielderror/>标签。而<s:fielderror/>会解析成<ul><li><span>error message</span></li></ul>的形式,这样一来错误信息的显示就只能显示在验证字段的上方或者下面,而我们需要的往往是将错误信息显示在验证字段的右边。
,于是就将<s:fielderror/>加到error.jsp 页面上,这才看到错误信息,原来是storelist.jsp中的一个隐藏input
<input type="hidden" name="currentPage" value="${currentPage}"/>
的值验证无效,所以看了一下以前的代码发现没有value="${currentPage}"属性,所以去掉该属性后,再测试,正常。终于解决了,不容易......
    总结一下:遇到No result defined for action的问题的时候,首先看是不是validate的问题,在action中,设置断点,看执行了没有(注意,要使用debug,tomcat必须以debug方式启动,建议在开发的时候都是以debug方式启动),再加一个INPUT的返回结果看看,在相应的页面中输出验证信息。如果不是validate的问题,再看页面元素中有重命名时,但后台action类的对应的接收此同名参数的是变量而没有写成数组,也可能是路径的问题......
分享到:
评论
1 楼 litao11046 2011-03-24  
总结得挺好的,我遇到过这样的问题,后来发现是form的enctype属性写错了

相关推荐

    jsp\No result defined for action and result input.doc

    ### Struts2框架中“No result defined for action and result input”错误解析及解决方法 #### 错误概述 在Struts2框架中开发Web应用程序时,可能会遇到一个名为“No result defined for action and result input...

    No result defined for action.doc

    在IT领域,尤其是在Web开发中,遇到“No result defined for action”这类错误是常见的问题,尤其当使用Struts2框架时更为突出。此类错误通常指向在控制器(Action)中未正确配置或实现结果集(Result),导致请求...

    struts2 的异常收集

    No result defined for action cn.itcast.user.web.action.UserAction and result error ``` 此异常表明在`struts.xml`中没有为指定的动作定义结果。例如,如果期望动作在发生错误时转向特定的JSP页面,但配置文件...

    配置struts2常见错误

    No result defined for action ***Action and result success **问题描述**: 当执行某个Action后,出现“没有定义success结果”的错误。 **解决方法**: 这意味着在`struts.xml`中未正确配置`success`结果。为了...

    struts2错误集合.txt

    这可能是由于`web.xml`中未正确配置Struts2过滤器,或者类路径中缺少必要的jar文件。 8. **结果类型定义错误:** 错误信息:“There is no result type defined for type 'json' mapped with name 'success'”。这...

    精心整理的ssh2 一些错误问题的记录(推荐)

    ### 错误八:No result defined for action... and result... 这类错误通常出现在Struts框架中,当在一个动作中定义的结果没有在配置文件(如struts.xml)中正确配置时发生。确保每个动作的结果都在配置文件中有...

    strut2上传文件注意

    如果缺少了`enctype="multipart/form-data"`这一设置,尝试上传文件时可能会遇到`No defined action and result input`等错误。 #### 三、文件临时存储目录的配置 为了确保文件上传过程中的稳定性,还需要在`...

    我的JAVA开发工作笔记

    在提供的内容中提到了一个错误 `No result defined for action com.sxit.smxt.action.XXXAction and result input`。这意味着Struts2框架无法找到对应Action的`input`结果定义。 #### 解决方案: - **检查配置文件*...

    struts_2.3.12GA_API文档(chm版本)

    Stops the action invocation immediately (by throwing a PauseException) and causes the action invocation to return the specified result, such as Action.SUCCESS, Action.INPUT, etc. void ...

    SSH错误集中分析.

    4. **Action配置**:Struts2的Action配置可能出错,检查struts.xml文件中Action的配置,确保namespace、actionName、result等属性正确。 三、Hibernate面对的错误 1. **懒加载异常**:如果在Session关闭后尝试访问...

Global site tag (gtag.js) - Google Analytics