`
san_yun
  • 浏览: 2652207 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

webwork2入门(二.2)

阅读更多

在web应用经常需要要对用户提交的表单进行验证

webwork有3种验证方式:

客户端验证

服务器端验证

Ajax验证:

下面来探讨最简单的服务器端验证

webwork通过实现com.opensymphony.xwork.Validateable 和 com.opensymphony.xwork.ValidationAware接口提供验证功能,通常我们不会自己去实现这两个接口,而是通过继承com.opensymphony.xwork.ActionSupport这个类。

来看我们Action的变化

java 代码
  1. package mypackage;   
  2.   
  3. import java.util.Map;   
  4.   
  5. import com.opensymphony.xwork.ActionContext;   
  6. import com.opensymphony.xwork.ActionSupport;   
  7. import com.opensymphony.xwork.Validateable;   
  8. public class SimpleAction extends ActionSupport implements Validateable {   
  9.   
  10.     private User user = new User();   
  11.        
  12.     public String execute() throws Exception {   
  13.        
  14.         ActionContext context = ActionContext.getContext();   
  15.         Map session = context.getSession();   
  16.         session.put("user", user);   
  17.         user.getMessage().add("msg1");   
  18.         user.getMessage().add("msg2");   
  19.         user.getMessage().add("msg3");   
  20.            
  21.         return SUCCESS;   
  22.     }   
  23.   
  24.     public User getUser() {   
  25.         return user;   
  26.     }   
  27.   
  28.     public void setUser(User user) {   
  29.         this.user = user;   
  30.     }   
  31.   
  32.     public void validate() {   
  33.         if("java".equals(user.getUsername())){   
  34.             this.addFieldError("username""username can't become java");   
  35.         }   
  36.     }   
  37.        
  38.   
  39. }   

如果我们的用户名为 java 的话就向客户端发送一段失败警告:

其中的addFieldError方法是从ActionSupport继承来的,第一个参数表示的是域(field)名,第二个参数表示的是出错信息.

一件奇怪的事是execute方法并没有显示调用validate方法,validate方法怎么运行,它总不可能自动运行吧

答案是通过拦截器

我们的xwork.xml将作如下变化:

xml 代码
  1. <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">  
  2. <xwork>  
  3.     <include file="webwork-default.xml" />  
  4.     <package name="default" extends="webwork-default">  
  5.         <action name="simple" class="mypackage.SimpleAction">  
  6.             <result name="success" type="redirect">success.jsp</result>  
  7.             <result name="input">index.jsp</result>  
  8.             <interceptor-ref name="params" />  
  9.             <interceptor-ref name="validation"/>  
  10.             <interceptor-ref name="workflow"/>         
  11.         </action>  
  12.     </package>  
  13. </xwork>  

新增两个拦截器 validation 和 workflow,第一个拦截器增加了验证的功能,第二个拦截器会改变action拦截器的运行顺序,具体是:先执行 validate()方法,让后调用hasFieldErrors()方法检查是否有错误,如果有直接返回input,而不再执行余下的action.

index.jsp将会做如下变化

xml 代码
  1. <%@taglib prefix="ww" uri="/webwork" %>  
  2. <html>  
  3. <body>  
  4. <div style="color: red"><ww:fielderror />div>  
  5. <form action="simple.action">  
  6. <input type="text" name="user.username"><br>  
  7. <input type="password" name="user.password"><br>  
  8. <input type="submit" value="submit">  
  9. form>  
  10. body>  
  11. html>  

增加一个捕获错误的标签:

  1. <ww:fielderror />  

 

其余部分都不会变化

效果图:

分享到:
评论
7 楼 lijie250 2007-05-02  
我也觉得这个版块多搞点入门的东西,这个就不错,高手都是一个过程!!
6 楼 rainlife 2007-05-01  
其实这些入门的文章,在官方提供的References里面都已经有了,只是很多是英文的,很少人愿意去看罢了,opendoc的webwork指南里面也存在与楼主类似的示例。
5 楼 san_yun 2007-05-01  
4 楼 bluemn2000 2007-04-10  
:D我也觉得很好,在这个网站浏览了这么久,这还是对我这个初学者来说能看得懂的为数不多的文章之一,我支持LZ!! 
3 楼 dcheng 2007-04-10  
对我们初学者来说,我觉得这个教程写的很不错,可以让我们很快的入门,高手可以写一些高级的东西,可以让我们站在你们的肩上:)
2 楼 san_yun 2007-03-26  
我一直认为,学过的东西,不让它忘掉最好的办法就是把脑子里理解的东西再写出来,这是我自己给自己学的教程,如果上面的朋友知道的更多,何不写出来给我们这些初学者铺上一条红地毯
1 楼 kjhot 2007-03-22  
应该弄些高级的东西,大家都知道的其实不用重复说来说去!

相关推荐

    WebWork入门与精通.docx

    WebWork入门与精通 WebWork是一个开源项目,由OpenSymphony组织开发,项目创始人是Rickard Oberg。WebWork是一个基于Java的Web应用程序框架,提供了一个灵活的架构,可以帮助开发者快速构建Web应用程序。 WebWork...

    webwork2入门例子

    这个“webwork2入门例子”旨在帮助初学者理解并开始使用WebWork2框架。WebWork2提供了强大的动作映射、数据绑定、异常处理以及拦截器等功能,使得开发者可以更高效地构建Web应用。 首先,我们要了解WebWork2的核心...

    struts2开发入门以及webWork开发入门文档

    2. **WebWork入门** - **框架起源**:WebWork是Struts2的前身,它的许多理念和设计被Struts2采纳。WebWork引入了拦截器、类型转换、数据绑定等概念,显著提升了开发效率。 - **Action与ActionForm**:在WebWork中...

    webwork 入门学习

    本篇将围绕"WebWork入门学习"这一主题,深入讲解WebWork的核心概念、基本架构以及如何使用WebWork进行Web项目开发。 一、WebWork简介 WebWork由Apache软件基金会维护,其设计理念是通过减少样板代码和提供强大的...

    Webwork2 Guide.pdf

    快速入门章节为初学者提供了快速上手Webwork2的方法。首先,你需要下载WebWork2的最新版本,并将发行包中的`webwork-2.1.1.jar`及`lib\core\*.jar`文件复制到Web应用的`WEB-INF\lib`目录下。这一步骤确保了Web应用...

    webwork2开发指南

    二、WebWork2快速入门 1. 安装配置:首先,需要在项目中引入WebWork2的依赖库,配置web.xml文件以启动WebWork2的Servlet。然后,创建一个基本的动作类,并在actions.xml文件中进行映射。 2. 创建第一个动作:创建...

    webwork-2.1.zip

    WebWork 是一个基于Java的MVC(模型-视图-控制器)框架,它在Web应用程序开发中被广泛使用。WebWork 2.1是该框架的一个版本,...开发者可以通过这个压缩包快速入门,理解WebWork的工作原理,并运用到实际的项目开发中。

    webwork入门到精通

    《WebWork入门到精通》这一课程由松迪科技(北京)有限公司的田雪松主讲,旨在全面解析WebWork框架,从基础知识到高级应用,帮助学员掌握WebWork的核心技术和实战技巧。 ### WebWork概述 WebWork是一个开源的MVC...

    WebWork入门教程[创建你第一个WebWork action]

    这个"WebWork入门教程[创建你第一个WebWork action]"将引导你了解如何利用WebWork来构建动态的Web应用程序。让我们深入探讨WebWork的核心概念、Action的创建以及如何实现基本的流程控制。 **WebWork核心概念** 1. ...

    webWork

    1. 入门指南:介绍如何安装和配置WebWork,以及创建第一个WebWork应用。 2. 深入理解:讲解Action、Interceptor、OGNL等核心组件的工作原理。 3. 实战示例:通过实际项目案例展示WebWork的应用场景和最佳实践。 4...

    WebWork入门例子 HelloWorld

    这个“WebWork入门例子 HelloWorld”是为初学者准备的一个简单教程,旨在帮助他们快速理解WebWork框架的基本概念和工作原理。 WebWork的核心特性包括动作映射、数据绑定、拦截器、异常处理和强大的视图渲染。它通过...

    WebWork2.2入门

    **WebWork 2.2 入门指南** WebWork 是一款基于 Java 的开源 Web 应用框架,它在 MVC(模型-视图-控制器)架构上构建,为开发者提供了强大的功能,包括动作映射、数据绑定、异常处理等。本文将深入浅出地介绍如何...

    webwork2教程

    ### WebWork2 教程详解 #### 一、引言 WebWork2 是一款轻量级的 Java Web 开发框架,它遵循 MVC (Model-View-Controller) 设计模式,旨在...希望本教程能帮助您快速入门 WebWork2,并在实际项目中灵活运用这些知识。

    webwork快速入门

    ### WebWork快速入门知识点 #### 一、WebWork框架简介 **WebWork**是一个由OpenSymphony组织开发的Java Web应用框架,它采用MVC(Model-View-Controller)架构模式,强调组件化和代码重用。WebWork的最新版本为2.1...

    webwork入门(添加注释)

    以上是WebWork入门的基本内容,涵盖了WebWork的核心概念、安装、动作、ActionContext以及请求处理机制。继续深入学习,你可以探索更多高级特性,如拦截器(Interceptor)、国际化(i18n)、AOP(面向切面编程)等,...

Global site tag (gtag.js) - Google Analytics