昨天项目遇到个小BUG. 页面上有个<html:reset>标签
此时你没有submit之前是可以用的 但是当submit之后就不好用了 研究了半天 搞明白它的原理
reset标签是重置而不是清空的 也就是说reset会恢复到之前的值状态
当你submit 提交action后 会经过formbean 此时bean里是有值的 而后跳回到你原页面(也就是你的注册页面) 此时页面把formbean的值又给带了回来
所以你此时reset是无效
在网上找到一个方法说
在formbean里重写他的reset方法 然后给他的form属性默认值!
@Override
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
super.reset(mapping, request);
this.setStaticType("1A"); //给你的form属性赋默认值
}
类似于这种!!
但是我自己试了不行 ,可能我理解的不够透彻! 不过根据原理感觉这样是可行! 但还是不行!
最后解决办法:
把<html:reset>标签换成 <html:button>标签 ( 注意button标签一定property属性 否则jsp会报错)
ps: 至于为什么一定要加上property属性 后面我在解释!
org.apache.jasper.JasperException: /controlUser/newUser.jsp(499,10) According to the TLD or the tag file, attribute property is mandatory for tag button
最终效果:
<html:button styleClass="btn" οnclick="newUserReset()" property=""></html:button>
JS代码:
//解决sumbit后reset无效问题
function newUserReset(){
document.getElementById("webname").value=""; // 用户名
document.getElementById("topOrgName").value=""; // 所属组织
document.getElementById("roleType").value=""; // 用户角色
document.getElementById("active").value=""; // 是否激活
document.getElementById("dtmf").value=""; // 支持终端管理会议
document.getElementById("password").value=""; // 密码
document.getElementById("checkpassword").value=""; // 确认密码
document.getElementById("telephone").value=""; // 电话
document.getElementById("email").value=""; // Email
document.getElementById("mobile").value=""; // 手机号码
document.getElementById("maxStorage").value=""; // 最大存储空间
document.getElementById("ta").value=""; // 描述
}