• Struts2框架提示 No result defined for action and result fail


    当时我正在学习Struts2的使用,当时就是用Struts2框架写一个登录的功能,按照网上的教程一步一步的操作,终于全部步骤都弄好了,见证奇迹的时刻要来了,可是当我填写完用户名和密码之后,点击登录,却出现上面的那个图,这让我很失望啊,而且就是这个错误,花了我一个晚上才弄明白了。

    实际上,是有两个错误在里面的。

    1. 在struts.xml配置文件中,action的值,我当时写是action=“login”,如下所示:
      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
      <struts>
          <package name="struts2" extends="struts-default">
              <action name="login" class="com.test.action.LoginAction">
                  <result name="success">/success.jsp</result>
                  <result name="fail">/fail.jsp</result>
              </action>
          </package>
      </struts>    

      网上找了各种方法都没解决,最后才知道,实际上,login是struts里的一个保留字,不能使用,因此换一个就好了,我就换成action=“userlogin”,果然就好使了,这都是经验不够丰富啊。当然可能有其他的人也会碰到这个问题,但原因不一定跟我相同,有的网友说要在action标签里加上namespace=“/”,这个方法也是这种问题的一个解决方法吧,只不过我遇到的不是这种情况。

    2. action类里的字段的值都为null。诶,出现这个问题也是怪我自己太不小心了,是我在写username字段的get方法时把getUsername写成了getUesrname,真是粗心啊。我开始还在怀疑是不是Struts2框架在数据封装上出现问题了,所以就一直找Struts是如何进行数据封装的相关问题,但最终也没找原因,不过这也没白费功夫,这让我了解到了Struts2的数据封装有好几种方式,而不仅仅是我所知道的属性驱动方式,同时也知道了虽然Struts2框架中,action只是普通的java类,并不强制要求实现Action接口或继承ActionSupport类,但是继承ActionSupport类可以方便我们的action开发,它可以对表单数据进行数据校验(重写validate()方法)和校验信信息国际化(getText()方法)。更详细的请参考博文Struts2 继承ActionSupport的用处
    厚积薄发
  • 相关阅读:
    Install Postgresql on Ubuntu
    Pytest
    Pytest
    wrk 压力测试
    Objective-C 格式化字符串Format
    安装BeyondCompare on Ubuntu
    eclipse + python + pydev (Pydev安装成功确看不到插件的解决办法)
    如何解决: Ubuntu 系统 adb devices出现no permissions
    oracle rac搭建
    CentOS6.8编译安装LAMP
  • 原文地址:https://www.cnblogs.com/xinfengzi/p/7041747.html
Copyright © 2020-2023  润新知