struts2无故执行execute()方法
来源:互联网 发布:手写速记知乎 编辑:程序博客网 时间:2024/06/11 13:59
用struts2+hibernate建网,包含对数据库的增删查改的操作,测试时发现按钮明明指定method为add或edit方法,但“有时”实际执行却是execute方法,后退再点击时大多又正常执行add或edit方法。
似乎找到导致这个问题的直接原因:
当用户编辑完textfield、select等控件后,焦点仍然在最后选择的控件上而不是submit按钮,如果通过回车键直接提交form,则会造成struts2调用execute();如果使用tab或鼠标更改控件焦点到sumbit按钮上,那么再回车或鼠标点击,struts2则会正常调用sumbit中指定的方法。
实验证明,使用:
1、<s:submit name="edit" method="edit" value="编辑"/>
对应html:<INPUT id=serviceDLaction_edit value=编辑 type=submit name=method:edit>
2、<s:submit action="customeraction" name="editall" value="编辑" method="editpage"/>
对应html:<INPUT id=_edit value=编辑 type=submit name=action:serviceDLaction!edit>
以上两个方法都存在此情况……私估计这是struts2的BUG,当页面的焦点不在submit上而回车提交form时,虽然form中的第一个submit为蓝色(获得焦点时的颜色——伪),但焦点不会真正移动到该submit上再提交form,而是直接就提交了,于是struts2将监测不到用户选择的submit中指定的method,所以就只有执行默认调用,即execute()。对于要调用execute()的submit,实际执行方法都是execute(),所以并无影响。
只有当在struts.xml中指定action的method(通配符实质)时,struts2才会将检测不到调用的方法名时默认调用的execute()改变为默认调用action中指定调用的method。所以此问题的在struts2改正此BUG前,解决办法之一是在struts.xml中指定action的method。
还望测试指正。
—————————————————————————2010.12.20更新线————————————————————————————
一上班继续搜索解决方法,发现以下两篇博文
struts里只有一个input的text型元素,回车报错解析
由IE浏览器引发的Struts2的Bug之submit无法传至服务器
终于得知是ie的问题,在不影响一个form中多个submit的功能正常的情况下,最简单的方法就是添加一个隐藏的输入框。例如:
<div style="display: none;"><s:textfield name="iebug"/></div>
- struts2无故执行execute()方法
- struts2中的execute()方法没有执行
- struts2 action中的execute方法只执行一次
- 使用struts2文件下载时,execute()方法执行两次
- 在struts2中默认执行的execute方法
- 关于Struts2中的execute方法
- struts2的actionsupport中的execute()方法理解
- struts2 调用默认方法execute()的事例
- struts2文件上传,看到书上讲的action类的执行方法不是execute而是upload,不解,故搜之
- struts2 能进入action 不执行execute的问题
- Struts2中Action必须实现execute方法吗
- Struts2中Action必须实现execute方法吗
- 三菱DPLSR无故不执行问题
- 使用JdbcTemplate的execute()方法执行SQL语句
- httpClient访问网络,httpclient.execute(httpGet)方法不执行问题
- 关于action默认执行execute()方法一点想法
- Struts Action的execute方法不执行问题
- 使用JdbcTemplate的execute()方法执行SQL语句
- tomcat安全管理策略
- 母板与内容页login.aspx都在同一目录下,为什么图片显示路径明明正确,却显示不出来?
- 使用Minicom连接交换机/路由器
- 对overflow与zoom”清除浮动”的一些认识
- css 清队浮动 总结
- struts2无故执行execute()方法
- 一流学生就业,二、三流学生出国或是考研,末流学生创业
- android:AsyncTask实现异步处理任务
- USACO 1.1.2 Greedy Gift Givers (gift1)
- Expect 批量登陆多台服务器办法
- win7无法启动tomcat的解决方法
- OpenIMS的安装脚本,备份用
- java使用虚拟属性操作LDAP(opends)用户,角色,组
- linux下多进程、多线程编程