webwork中通过dwr来实现页面中的form验证,这种ajax的验证方式相对于其他javascript的客户端验证方式的好处就是,已经变成了webwork中的一个tag,可重用性比较强,一旦配置成功,以后可多次使用,减低了程序员的重复劳动。缺点就是页面的格式不能随意调整。下面将具体的过程叙述如下(根据showcase为例):
一、配置web.xml
在web.xml中添加对dwr的支持
xml 代码
- <servlet>
- <servlet-name>dwrservlet-name>
- <servlet-class>uk.ltd.getahead.dwr.DWRServletservlet-class>
- <init-param>
- <param-name>debugparam-name>
- <param-value>trueparam-value>
- init-param>
- servlet>
- <servlet-mapping>
- <servlet-name>dwrservlet-name>
- <url-pattern>/dwr/*url-pattern>
- servlet-mapping>
这里面也没什么可说的了,标准的配置
二、配置xwork.xml
xml 代码
- <action name="ajax" class="test.QuizAction">
- <result name="input">input.jsp<result>
- <result>success.jsp<result>
- >
在xwork.xml中添加一个action,这里面值得注意的是对于form页面的验证,需要添加一个
xml 代码
- <result name="input">input.jspresult>
否则页面调入的时候,将直接进行验证。
三、建立action
java 代码
- package test;
- import com.opensymphony.xwork.ActionSupport;
- /**
- * @author Patrick Lightbody (plightbo at gmail dot com)
- */
- // START SNIPPET: quizAction
- public class QuizAction extends ActionSupport {
- String name;
- int age;
- String answer;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getAnswer() {
- return answer;
- }
- public void setAnswer(String answer) {
- this.answer = answer;
- }
- }
- // END SNIPPET: quizAction
这是一个最简单的bean,里面包括了页面上form中的相关元素
四、创建action的验证文件(.xml)
xml 代码
- >
- <validators>
- <field name="name">
- <field-validator type="requiredstring">
- <message>You must enter a namemessage>
- field-validator>
- field>
- <field name="age">
- <field-validator type="int">
- <param name="min">13param>
- <param name="max">19param>
- <message>Only people ages 13 to 19 may take this quizmessage>
- field-validator>
- field>
- validators>
验证文件按照基本的方法建立就可以,同时将文件名称命名为XXXbean-validation.xml
五、创建jsp文件
最后创建两个jsp文件:
xml 代码
- <html>
- <head>
- <title>Validation - Basic</title>
- <ww:head theme="ajax"/>
- </head>
- <body>
- <ww:form method="post" validate="true" theme="ajax">
- <ww:textfield label="Name" name="name"/>
- <ww:textfield label="Age" name="age"/>
- <ww:textfield label="Favorite color" name="answer"/>
- <ww:submit/>
- </ww:form>
- </body>
- </html>