1.前台数据封装
<input type="text" issave="true" fieldname="userAccount" require="true" datatype="chars"
showmessage="用户账号为空或设置错误" maxlength="20" class="textfile" id='unit_account'/>
这里wmframework 扩展了html标签,增加了几个自定义的属性。issave="true"表明当前表单元素是必须提交到后台进行操作的;fieldname是匹配当前表单提交匹配domain(或pojo)的中某个属性的名称;require表明当前字段是否必填;datatype标识当前元素需要填入的数据类型,这里chars代表需要字符型;showmessage表示如当前表单元素校验不通过;需要给出的提示信息。当然不光是input可以这样定义,只要html支持的页面标签如select,textarea,image,div,tr,td等等都可以进行这些属性的定义,这里就不一一罗列了。
2.前台数据校验
3.前台数据提交
这是一个提交按钮触发的onclick事件处理函数

function dosave() {
var ac = new action();//创建js对象请求action对象
ac.setForm(document.forms[0]);//设置本次提交表单数据所处的form对象,当一个页面存在太多元素或form是,可以有效地减少没必要的页面元素遍列
ac.setUrl(cps+'/userAction.do?action=add');//设置本次提交的路径url, cps为公共文件中定义的全局变量,var cps = "<%=request.getContextPath()%>";即当前上下文的js引用。
ac.setTextDiv('textdiv');//设置本次提交,需要隐藏按钮所在的div的ID值。数据提交后,当前操作按钮将被隐藏,避免用户进行二次点击操作
ac.setHitDiv('hitDiv');//设置异步提交时,进度条所在的div的ID值。数据处理过程中,提交按钮将被隐藏,同时在相同位置将显示一个进度条标识当前请求处理的进度
ac.setIsasy(true);//设置本次提交的操作方式:true 异步方式,即当前提交无需等待response的响应,可完成类似cpu多线程同时处理的方式, false 同步方式即当前请求提交后,必须等待response的响应,这好比数据库中的排它锁,一时仅能保证一个请求的处理。
ac.setFunctionname("insertUser");//设置本次提交执行的sqlmap配置文件中的xml节点方法的id值,对大小写敏感,如果你了解ibatis,应该知道这里指的东西。
ac.setDomainname("OaUser");//设置本次提交数据封装对象名称(和后台domain一致,不用加类全路径,加已无所谓)对大小写敏感,后台自带完成当前domain对象的全路径添加匹配,这就要求,整个系统的domain存放在固定的package ,当然你实在不愿意,那就直接加上当前domain的这个包路径,如 ac.setDomainname("com.test.OaUser");。
ac.execute();//发送数据请求,因为这里仅考虑的是进行简单的保存或删除操作,所以没有添加回调函数的处理
}
如果你感觉前面的定义过于繁琐难记,那可以使用第二种方式,直接获得数据表单居于xml格式封装的字符串,前面忘记说一点,wmframework 所有数据请求都是通过xml格式封装并通过ajax发出的,这点我在(一)中已经进行了相关介绍说明。
给出一个定义的参考

function dosave() {
var ac = new action();//创建js对象请求action对象
ac.setForm(document.forms[0]);//设置本次提交表单数据所处的form对象,这里必须设置,不然WMvalidate没法子帮你进行数据校验
ac.setUrl(cps+'/userAction.do?action=add');//同上
ac.setTextDiv('textdiv');//同上
ac.setHitDiv('hitDiv');//同上
ac.setIsasy(true);//设置本次提交的操作方式:true 异步方式 false 同步方式
var xmlStr = " <?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+" <root>"
+" <vos id="OaUser"> "
+" <vo> "
+" <userName>测试用户</userName> "
+" <userAccount>demo</userAccount> "
+" <password>123</password> "
+" <userType>1</userType> "
+" <departmentId>1</departmentId> "
+" <function>insertUser</function>"
+" </vo> "
+" </vos> "
+" </root> ";
ac.setXmlstr(xmlStr);//设置请求数据xml字符串
ac.execute();//同上
}

至此jsp前台请求处理过程介绍基本结束,可能整个过程看起来很简单。确实很简单,因为WMframework本就是简单的东西,不过2.0版本相对处理就比这个繁琐一些,可兼容的东西也多一些,不过对于中小型web运用开发来说,这样的处理基本上足够了。先写到这里吧,下次再继续,太多了看的人眼花,变成消化不良了不太好。。。
(注:本人文章均为原创,转载请注明出处!20100616写于深圳。)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述