`
夜枫舞影
  • 浏览: 50439 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

webwork 验证

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

webwork有3种验证方式:

客户端验证

服务器端验证

Ajax验证:

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

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

来看我们Action的变化

java 代码
package mypackage;   
  
import java.util.Map;   
  
import com.opensymphony.xwork.ActionContext;   
import com.opensymphony.xwork.ActionSupport;   
import com.opensymphony.xwork.Validateable;   
public class SimpleAction extends ActionSupport implements Validateable {   
  
    private User user = new User();   
       
    public String execute() throws Exception {   
       
        ActionContext context = ActionContext.getContext();   
        Map session = context.getSession();   
        session.put("user", user);   
        user.getMessage().add("msg1");   
        user.getMessage().add("msg2");   
        user.getMessage().add("msg3");   
           
        return SUCCESS;   
    }   
  
    public User getUser() {   
        return user;   
    }   
  
    public void setUser(User user) {   
        this.user = user;   
    }   
  
    public void validate() {   
        if("java".equals(user.getUsername())){   
            this.addFieldError("username", "username can't become java");   
        }   
    }   
       
  
}   

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

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

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

答案是通过拦截器

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

xml 代码
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">  
<xwork>  
    <include file="webwork-default.xml" />  
    <package name="default" extends="webwork-default">  
        <action name="simple" class="mypackage.SimpleAction">  
            <result name="success" type="redirect">success.jsp</result>  
            <result name="input">index.jsp</result>  
            <interceptor-ref name="params" />  
            <interceptor-ref name="validation"/>  
            <interceptor-ref name="workflow"/>         
        </action>  
    </package>  
</xwork>  

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

index.jsp将会做如下变化

xml 代码
<%@taglib prefix="ww" uri="/webwork" %>  
<html>  
<body>  
<div style="color: red"><ww:fielderror />div>  
<form action="simple.action">  
<input type="text" name="user.username"><br>  
<input type="password" name="user.password"><br>  
<input type="submit" value="submit">  
form>  
body>  
html>  

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

<ww:fielderror />  



其余部分都不会变化

效果图:


分享到:
评论

相关推荐

    webwork验证框架

    WebWork验证框架是一种用于Java Web应用的验证工具,它整合在XWork核心库中,主要目的是在Action执行前对用户输入的数据进行有效性检查。WebWork验证框架提供了多种灵活且强大的特性,使得数据验证过程变得更加简单...

    webwork-register.rar_webwork_webwork 验证_webwork spring

    在"webwork-register"这个项目中,WebWork可能用于处理用户注册过程中的各种操作,如表单提交、数据验证和业务逻辑处理。 Spring框架是一个全面的企业级应用开发框架,它不仅提供了IoC(控制反转)和AOP(面向切面...

    Webwork 的 验证 客服端 和 服务器段 数据验证

    Webwork 是一个基于Java的MVC(模型-视图-...通过分析和运行这些文件,你可以更深入地了解Webwork验证的实现细节,并动手实践如何设置和调试验证规则。这将有助于提升你在Webwork框架下进行数据验证的实际操作能力。

    webwork 登录逻辑验证(简单)

    WebWork登录逻辑验证是任何Web应用程序中的关键部分,它确保只有合法用户能够访问受保护的资源。 在WebWork中,登录过程通常涉及到以下几个步骤: 1. **请求处理**:当用户尝试登录时,他们通常会填写包含用户名和...

    struts2验证文档

    Struts2框架内置了一套强大的验证系统,它基于WebWork验证框架进行扩展和优化。该验证系统支持前端和后端验证,并且可以通过XML配置文件或注解的方式定义验证规则。下面将具体介绍如何在Struts2中配置和使用验证规则...

    解决webwork客户端验证提示信息重复多次显示问题

    WebWork是一个流行的Java Web框架,它提供了强大的动作框架和验证机制。然而,在实际应用中,有时可能会遇到一个问题,即客户端验证提示信息会重复多次显示,这不仅影响用户体验,也可能暴露出潜在的代码问题。本文...

    webwork-1.4-src.zip_webwork_webwork s_webwork.zip_webwork1.4.zip

    8. **插件系统**:WebWork支持插件扩展,开发者可以方便地添加自定义功能,如验证、缓存管理等。 9. **配置管理**:WebWork的配置文件(如struts-config.xml)用于定义动作、结果、数据源等,这使得配置信息集中...

    WEBWORK

    WebWork 提供了强大的动作(Action)处理、类型转换、拦截器(Interceptor)机制和丰富的验证功能,帮助开发者构建可维护、可扩展的 Web 应用程序。 在 WebWork 中,配置是至关重要的,因为它定义了框架如何工作...

    webwork2开发指南

    2. 数据验证(Validation):WebWork2提供了强大的数据验证机制,可以通过注解或XML配置文件定义验证规则,确保输入数据的有效性。 3. 国际化与本地化(i18n/L10n):WebWork2支持多语言环境,通过资源文件管理不同...

    WebWork2.0讲解说明

    3. Interceptors(拦截器):拦截器是WebWork2.0的一个强大功能,允许在Action调用前后插入自定义逻辑,如权限验证、日志记录等。 二、WebWork2.0主要特性 1. 智能表单绑定:WebWork2.0支持自动将HTTP请求参数绑定...

    WebWork教程开发资料

    当表单提交时,WebWork会针对每个字段执行验证。相反,Model-Driven Action将整个对象模型作为操作单位,模型对象包含所有相关属性,这样可以实现更复杂的数据关联验证。 **ActionContext(Action上下文)** ...

    WebWork docs 2 -- webWork 详细的说明文档

    6. **请求参数(Parameters)**:WebWork提供了多种方式处理请求参数,包括自动类型转换、参数验证和安全防护。理解参数绑定机制有助于构建健壮的Web应用。 7. **视图技术**:WebWork可以与多种视图技术集成,如JSP...

    webwork

    3. **拦截器(Interceptors)**:WebWork 使用拦截器来执行一些预处理或后处理任务,如权限验证、日志记录等。拦截器可以在Action执行前后插入自定义逻辑,增强了系统功能的灵活性。 4. **异常处理**:WebWork 提供...

    webwork_框架文档

    `Interceptor`是WebWork中的另一个关键概念,它允许在Action执行前后插入自定义逻辑,例如验证、日志记录、性能监控等。 WebWork的类型转换功能是其一大亮点,它可以自动将HTTP请求参数转换为Action类的属性类型,...

    Webwork2开发指南

    Webwork2 提供了强大的数据绑定功能,允许开发者将表单字段直接映射到动作类的属性,极大地简化了输入验证和数据处理。通过注解或XML配置,可以定义数据类型的转换器和验证规则。 **4. 异常处理** Webwork2 具有...

    webWork2开发指南

    3. **Interceptors(拦截器)**:WebWork2引入了拦截器的概念,它们在Action执行前后执行,可以用于日志记录、事务管理、权限验证等。拦截器的使用使得代码更易于组织和复用。 4. **动态方法调用(Dynamic Method ...

    WebWork教程

    WebWork的拦截器(Interceptor)框架和验证框架也是教程的重要内容,它们允许开发者在运行时添加额外的行为和验证逻辑。 WebWork还强调了与其他开源项目集成的能力,如Spring、Hibernate和Xml-RPC。这些集成让...

    webwork教程

    - WebWork提供了内置的验证框架来简化表单验证过程。 - 可以为Action添加验证规则,自动验证用户的输入数据。 - **XWork配置文件**: - xwork.xml是WebWork的核心配置文件,用于定义Action、拦截器、结果类型等...

Global site tag (gtag.js) - Google Analytics