struts的自动从form中取得数据填充到action的属性时,类型转换出错,然后就必须重启tomcat,否则该action就再也无法使用,即使填写了正确的数据再提交也是同样的http status 500的错误,说no result for input

解决方案 »

  1.   

    struts2.?如果是struts2, 是你自定义类型的转换器, 还是struts2自身的类型转换呢?
    还有,你是不是用了数据校验的?
      

  2.   

    你需要配置Input 这样程序出错了会跳转到input页面 将错误信息返回给用户的另外 你不用重启tomcat的 只不过是应用出错而已 怎么会影响到tomcat
      

  3.   

     不要继承自 ActionSupport,它是做了验证的(ValidationAware )。 实现 Action 接口
      

  4.   

    你只要在类型转换器中,吧可能会出错部分try catch起来,然后妥善处理,不让该action终止即可。
      

  5.   

    1。我没有使用验证功能
    2.用的是struts自己的数据转换
    3.确实是tomcat受影响了大家可以做个简单的试验
    都用最简单的代码,直接struts2取form提交的内容
    一个是数据转换的,比如你在action定义一个int的属性,但是你从form提交了一个string类型的,比如ABC,
    提交后页面就会报错,就算你把ABC改成123再提交也是不行了,除非重启tomcat,但是其他action不受影响,还是可以正常提交的另外是上传文件的测试
    同样,最简单的代码,用struts把上传的文件赋值到action中,如果文件大小为0,或者超过2M的默认大小,同样会出现错误,而且再上传任意大小的文件都是不可以上传了,一直显示http status 500的错误了
      

  6.   

    可能是一个bug,
    但是这种情况你是否应该在客户端就过滤掉呢.? 你写程序, 你知道这个程序是要整数而客户不知道,你为何不进行数据校验呢? 客户端服务端都行, 非要等服务器down了阿.?
      

  7.   

    这个问题struts1的formBean应该也有这个问题.!
      

  8.   

    struts2 中 楼主应该struts.xml中配置input映射所对应的页面!<action name="login" class="com.my.struts.example.LoginAction">   
                <result name="input">/login.jsp</result>  
                <result name="error">/error.jsp</result>   
                <result name="success">/welcome.jsp</result>   
            </action>   
      

  9.   


    就像4楼说的你的action可能继承了ActionSupport类,它有类型转换的校验,在action result里配个input提示类型转换出错就行了
      

  10.   

    以前玩struts2的时候只要不用到校验和国际化一般我都不会去继承actionSupport的,所以这个问题昨天临时研究了下.!
    继承actionSupport会校验数据,如果转换出错,会找你要input视图,没配就出错.! 如果你没有继承actionsupport的话, 页面该显示还是显示,只是后台会报找不到相应的set方法去填充请求参数值.!
    这个事情客户端写一套正则表达式校验了得了算.!
      

  11.   

    楼主用 MyEclipse了吗?
    用debug 模式调试下,看看具体怎么回事。
      

  12.   

    tomcat怎么会受影响?除非死循环了 拖死了Tomcat
      

  13.   


    两种情况都不会,可能是你的struts中的bug。
    我的版本:
    struts2-core-2.1.8.1.jar
    commons-fileupload-1.2.1.jar
    commons-io-1.4.jar
    commons-logging-1.0.4.jar
    freeer-2.3.15.jar
    xwork-core-2.1.6.jar
    上面第一个会出现FormatException,第二个会报input找不到,但是回到输入页面重新来过,只要数据正确,还是正常的,绝对不会出现tomcat都死掉。楼主换个更高版本的struts lib包试试看
      

  14.   

    你的action bean配置成了singleton,也就是单例模式
      

  15.   

    public static List executequery(String hql) {
    Session session = null;
    Transaction ts = null;
    List list = null;
    try { session = openSession();//原来是缺了这一句                    ts = session.beginTransaction();
    list = session.createQuery(hql).list();
    ts.commit();
    } catch (Exception e) { if (ts != null) { ts.rollback();
    }
    throw new RuntimeException("出错"); } finally { if (session != null && session.isOpen()) {
    session.close(); } }
    return list;
    }
      

  16.   

    每次都执行finally,所以每次都会关闭,就没办法接收页面的数据了,不知道LZ是不是这种情况