struts2 Unmi 的 Struts2 学习笔记(十四)来源: 发布时间:星期五, 2008年5月23日 浏览:215次 评论:0
1. 从此开始学习 Struts2 对 Ajax 的支持。这也是 Struts2 新注入的元素。Struts2 的 Ajax 支持是建立在 Dojo 和 DWR 基础之上的。提供了 Ajax 的输入检验,表单提交;pub-sub 事件模型、自动完成以及与 JSON 的使用等功能。
2. 在 Struts2.0.6 和 Struts2.0.11 的 apps/struts-showcase-2.x.x.war 中的 dwr 包都还是 dwr-1.1-beta-3.jar,当前 DWR 最新版是 2.0,前一个稳定版是 1.1.4,所以正式应用可用 1.1.4 版,若用 2.0 DWR 需做充分的测试。Struts2 的 Ajax 支持是建立在 ajax 主题上的,ajax 是扩展了 xhtml 主题。 3. 用 Ajax 进行输入校验有以下几个步骤(当然项目中要引入 dwr 的 jar 包): 1) web.xml 中声明 uk.ltd.getahead.dwr.DWRServlet 对 /dwr/* 请求进行处理。 2) 增加 WEB-INF/dwr.xml 文件,内容为: "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"> import java.util.Map; import org.apache.struts2.validators.DWRValidator; DWRValidator.doPost(String,String,Map ]]> "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"> import java.util.Map; import org.apache.struts2.validators.DWRValidator; DWRValidator.doPost(String,String,Map ]]> 注意 Map 3) 注:没有 4) 校验规则文件,规则文件的命名与提交到后端校验是一样的,所以此时 ajax 会用 LoginAction-validation.xml 中定义的规则来校验输入。 4. 试过一下把 xwork-2.0.1.jar 换成了 xwork-2.0.4.jar,结果进行 Ajax 校验时,老报 java.lang.NoClassDefFoundError: Could not initialize class com.opensymphony.xwork2.validator.ValidatorFactory,原因还不明,但 ValidatorFactory 一直都的的确确是存在,以后用时先要注意到这一点,暂用 xwork-2.0.1.jar,有时间再去查明原因。 5. 表单的 Ajax 校验未通过之前,是不能提交的,点提交按钮没反应。但是真正的表单提交后的后台校验也是必不可少的,因为 Ajax 校验并不一定可靠,在页面上总有办法改变值后不触发 onblur 事件的,幸好,Ajax 校验和提交后的检验本来用的就是同一个校验规则文件,Ajax 校验之后还会有一次更可靠的校验。 6. 使用这种 Ajax 输入校验,一旦给 1) 在校验规则文件中不加对该字段的配置,但中间的 XMLHttpRequest 请求是少不了 2) 单独给输入组件指定 theme="xhtml",这样风格也可以保持一致,因为 ajax 主题扩展自 xhtml 主题的。 7. 使用 Ajax 表单,如果给 8. 使用了 ajax 主题的 form 中, 9. 考虑一个问题,当我们要用 Ajax 对表单校验, 10. 是关于 pub-sub 的理解,有些书写的模模糊糊,我会把我对此的理解记录下来,这几天有点事情太多,太累了,先占住这点,会补充的。 0
相关文章
读者评论
发表评论 |