zoukankan      html  css  js  c++  java
  • Struts1表单校验

        ActionForm中对表单元素进行校验
        @Override
        public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
            ActionErrors errors = new ActionErrors();
            if (StringUtils.isBlank(regUser.getUsername())){
                errors.add("username",new ActionMessage("用户名不能为空",false));
            }
            return errors;
        }
    
    
        JSP中需要显示错误信息
        第一种:${requestScope.get("org.apache.struts.action.ERROR")}<br/>
        第二种:${requestScope["org.apache.struts.action.ERROR"]}<br/>
        第三种:使用<html:errors>标签,首先需要配置国际化资源包
                <message-resources parameter="org.zln.struts.resource.errors"/>
                在validate校验方法中
                errors.add("username",new ActionMessage("error.username"));//这里的error.username是资源文件配置的key
                在jsp中
                <html:errors/><br/>就可以对错误信息进行输出。输出的是ActionErrors对象的值,是key对应的值还是硬编码值,取决于ActionMessage对象的初始化参数
    
                注意:资源文件查找的顺序:语言_国家->语言->操作系统相关->默认资源文件
                
    errors.footer=</ul><hr>
    errors.header=<h3><font color="red">Validation Error</font></h3><p>You must correct the following error(s) before proceeding:</p><ul>
    errors.prefix=<li>
    errors.suffix=</li>
    
    
    <html:errors property="username" footer="" header="" prefix="" suffix=""/>
    如果配置了footer,国际化文件中的errors.footer就不会生效
    表单校验只适合进行基本的字段校验,但是对于一些复杂的逻辑性校验,需要在Action中进行校验
    
    package org.zln.struts.action;
    
    import org.apache.struts.action.*;
    import org.zln.struts.form.RegUserForm;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Created by sherry on 000020/5/20 20:37.
     */
    public class RegUser extends Action {
    
        @Override
        public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
            RegUserForm regUserForm = (RegUserForm) form;
            /*ActionMessages是ActionErrors的父类*/
            ActionMessages errors = new ActionMessages();
            request.setAttribute("username",regUserForm.getRegUser().getUsername());
            /*业务逻辑校验*/
            if (!"zln".equals(regUserForm.getRegUser().getUsername().trim())){//假设数据库中获取到的用户名是  zln
                errors.add("username",new ActionMessage("用户不存在",false));
                /*将错误信息保存到request作用域中*/
                this.saveErrors(request,errors);//request.setAttribute(Globals.ERROR_KEY, errors);
                //return mapping.findForward("FAILURE");
                return mapping.getInputForward();
            }
            return mapping.findForward("SUCCESS");
        }
    }
    
    
    页面中对于错误信息的输出,与表单校验是一样的

    国际化->参数化

    资源文件
    error.empty={0}can't be empty
    填写参数
    errors.add("username",new ActionMessage("error.empty",new String[]{"用户名"}));
    
    “用户名”,这个参数也可以国际化
  • 相关阅读:
    MapReduce的自定义结果文件名OutputFormat
    MapReduce的Mapper端JOIN
    服务器配置 隐藏apache和php的版本
    mysqldump参数详细说明
    PHP漏洞全解(PHP安全性/命令注入/脚本植入/xss跨站/SQL注入/伪跨站请求/Session劫持/HTTP响应拆分/文件上传漏洞)
    apache nginx 通过 rewrite 设置 禁止执行PHP程序
    javascript 数组的知识整理
    is_uploaded_file函数引发的问题
    php 读取文件头部两个字节 判断文件的实际类型
    discuz 数据字典大全
  • 原文地址:https://www.cnblogs.com/sherrykid/p/4573871.html
Copyright © 2011-2022 走看看