struts的自动从form中取得数据填充到action的属性时,类型转换出错,然后就必须重启tomcat,否则该action就再也无法使用,即使填写了正确的数据再提交也是同样的http status 500的错误,说no result for input
解决方案 »
- 简单textarea小问题
- Tomcat虚拟目录的问题
- 哪位大侠给我个ASP+ACCESS数据库的类似于耗材管理系统的源代码,谢谢了
- Struts1.x的国际化问题。
- 向大家求个简单干净点的JSP论坛源代码+SQL2000数据库备份~~小弟跪地感谢了!
- 使用数据库连接池,servlet要操作数据库,取连接跟释放连接难道不是放在init、destroy中的?
- Mysql中建中文表名有什么限制??
- Struts2文件上传没有写文件的权限
- 请教有关radius协议,急
- 谁知道servlet中调用jsp,并且传递数据的方法
- Could not connect to SMTP host: smtp.163.com, port: 25
- 纳尼 就没人会 简单的自定义标签分页??
还有,你是不是用了数据校验的?
2.用的是struts自己的数据转换
3.确实是tomcat受影响了大家可以做个简单的试验
都用最简单的代码,直接struts2取form提交的内容
一个是数据转换的,比如你在action定义一个int的属性,但是你从form提交了一个string类型的,比如ABC,
提交后页面就会报错,就算你把ABC改成123再提交也是不行了,除非重启tomcat,但是其他action不受影响,还是可以正常提交的另外是上传文件的测试
同样,最简单的代码,用struts把上传的文件赋值到action中,如果文件大小为0,或者超过2M的默认大小,同样会出现错误,而且再上传任意大小的文件都是不可以上传了,一直显示http status 500的错误了
但是这种情况你是否应该在客户端就过滤掉呢.? 你写程序, 你知道这个程序是要整数而客户不知道,你为何不进行数据校验呢? 客户端服务端都行, 非要等服务器down了阿.?
<result name="input">/login.jsp</result>
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
就像4楼说的你的action可能继承了ActionSupport类,它有类型转换的校验,在action result里配个input提示类型转换出错就行了
继承actionSupport会校验数据,如果转换出错,会找你要input视图,没配就出错.! 如果你没有继承actionsupport的话, 页面该显示还是显示,只是后台会报找不到相应的set方法去填充请求参数值.!
这个事情客户端写一套正则表达式校验了得了算.!
用debug 模式调试下,看看具体怎么回事。
两种情况都不会,可能是你的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包试试看
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;
}
为