浏览器的两个默认处理: 1,当表单存在多个提交按钮,用户按下回车键,浏览器默认是提交左上角那个按钮; 2,如果在javascript中document.forms[0].submit()则同样提交表单,但不传递任何提交按钮的信息。 用户可能会要求设置一个默认提交按钮,而不是浏览器默认的动作。如果用户在页面上按回车键,则相当于点击其中一个提交按钮。 本文提供了解决回车键提交问题(兼容Firefox和IE)的办法。 1,首先提供了javascript代码,Script类; public static String getDefaultSubmitScript(String submitName) { StringBuffer buffer = new StringBuffer(); buffer.append("addEventListener("); buffer.append("/"document/","); buffer.append("/"keypress/","); buffer.append("function fireDefaultSubmit(evt){ defaultSubmit(evt,'" + submitName + "');}"); buffer.append(");"); return buffer.toString(); } 2,需要修改标准Body组件,将Body.java和Body.jwc拷贝到本地路径中,参考 Tapestry数据校验-修改Body.java和Body.js 3,每个页面类需要覆盖方法,设定默认提交的组件ID:
修改class为本地的Body类全标识。 5,由于修改了tapestry标准组件,需要修改相应的配置文件; 修改Framework.library中Body的specification-path为本地的包路径; 6,在page中设置相应的Submit/ImageSubmit组件的tag属性。 本文额外提供了替换tapestry标准组件的做法,尽量不要修改tapestry的标准类库,仅供参考。 |