当前位置: 代码迷 >> Web前端 >> eweb4j-1.b.8 预览 (1 新增简洁版验证器注解,改善Action访问URI注解写法)
  详细解决方案

eweb4j-1.b.8 预览 (1 新增简洁版验证器注解,改善Action访问URI注解写法)

热度:535   发布时间:2012-08-01 17:53:41.0
eweb4j-1.b.8 预览 (一 新增简洁版验证器注解,改善Action访问URI注解写法)
[list]
  • 控制器的Action方法注解写法更新.
  • 原来写法:
    @RequestMapping(value="helloWorld", method="GET|POST", showValErr="dwzJson")
    public void hello(PrintWriter out){
        out.print("hello world!");
    }
    

    现在写法:
    @Path("helloWorld")
    @GET 
    @POST
    @ShowValMess("dwzJson")
    public void hello(PrintWriter out){
        out.print("hello world!");
    }
    

  • 新增验证器注解写法
  • @Controller
    @Path("users")
    public class UserControlTest {
    
    	@Required
    	@IDCard
    	private long idCard;// 身份证号码,必填
    
    	@Required
    	@Chinese
    	private String chineseName;// 中文姓名,必填
    
    	@Date(format="yyyy年MM月dd号")
    	private String birthDay;//出生日期,格式:yyyy年MM月dd号
    	
    	@Int
    	@Size(min = 18, max = 50)
    	private int age = 0;// 年龄 0 为保密
    
    	@Required
    	@Length(min = 6, max = 18)
    	private String account;// 帐号,必填
    
    	@Required
    	@Length(min = 6, max = 32)
    	private String password;// 密码,必填
    
        @Equals(to="password", mess="请确认密码")
    	private String confirmPwd;// 确认密码
    
    	@Email
    	private String email;// 邮件地址
    
    	@QQ
    	private String qq;// QQ号码
    
    	@Enum(words = { "男", "女", "保密" })
    	private String gender;// 性别
    
    	@Length(min = 50, max = 500)
    	@Forbid(words = { "独立", "反gong", "性爱" })
    	private String intro;// 个人简介,要求文明用语
    
    	@Path("profile")
    	@GET
    	@ShowValMess("input.jsp")
    	// 验证信息在显示
    	public void showProfile(PrintWriter out) {
    		out.print(this);
    	}
    
    	
    	@Override
    	public String toString() {
    		return "User [idCard=" + idCard + ", chineseName=" + chineseName
    				+ ", birthDay=" + birthDay + ", age=" + age + ", account="
    				+ account + ", password=" + password + ", confirmPwd="
    				+ confirmPwd + ", email=" + email + ", qq=" + qq + ", gender="
    				+ gender + ", intro=" + intro + "]";
    	}
    }
    

    测试页面input.jsp:
    <%@ page contentType="text/html; charset=utf-8" language="java" import="java.util.*" %>
    <%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>欢迎使用EWeb4J框架 !</title>
    <style>
    	*{ font-family:Verdana, Geneva, sans-serif; margin:0; padding:0; font-size:12px; line-height:12px;}
    	.unit{ margin:0 auto;width:500px; padding:10px;}
    	.unit span{padding:5px; color:red; display:block; text-align:center;}
    	label{ display:inline-block; padding:10px; padding-right:20px; width:100px; text-align:right; font-size:14px;}
    	input,select{width:250px;height:30px;}
    	
    	.button{width:50px;}
    </style>
    </head>
    <body>
    	<form action="profile" method="get">
    		<div class="unit">
    			<label>身份证号码:</label>
              	<input type="text" name="idCard" value="${idCard[0]}" />
              	<span>${valError.idCard}</span>
          	</div>
          	<div class="unit">
    			<label>中文姓名:</label>
              	<input type="text" name="chineseName" value="${chineseName[0]}" />
              	<span>${valError.chineseName}</span>
          	</div>
          	<div class="unit">
    	  	  	<label>出生日期:</label>
    	      	<input type="text" name="birthDay" value="${birthDay[0]}" />
    	      	<span>${valError.birthDay}</span>
          	</div>
          	<div class="unit">
    	  	  	<label>年龄:</label>
    	      	<input type="text" name="age" value="${age[0]}" />
    	      	<span>${valError.age}</span>
          	</div>
          	<div class="unit">
    			<label>帐号:</label>
              	<input type="text" name="account" value="${account[0]}" />
              	<span>${valError.account}</span>
          	</div>
          	<div class="unit">
    			<label>密码:</label>
              	<input type="password" name="password" value="${password[0]}" />
              	<span>${valError.password}</span>
          	</div>
            <div class="unit">
    			<label>确认密码:</label>
              	<input type="password" name="confirmPwd" value="${confirmPwd[0]}" />
              	<span>${valError.confirmPwd}</span>
          	</div>
          	<div class="unit">
    			<label>邮件地址:</label>
              	<input type="text" name="email" value="${email[0]}" />
              	<span>${valError.email}</span>
          	</div>
    	
    		<div class="unit">
    			<label>QQ:</label>
              	<input type="text" name="qq" value="${qq[0]}" />
              	<span>${valError.qq}</span>
          	</div>
          	
          	<div class="unit">
    	      	<label>性别:</label>
    	      	<select name="gender">
    	      		<option selected="selected">保密</option>
    	      		<option>男</option>
    	      		<option>女</option>
    	      		<option>人妖</option>
    	      	</select>
    	      	<span>${valError.gender}</span>
          	</div>
          	
          	<div class="unit">
    			<label>个人简介:</label>
              	<textarea name="intro" rows="8" cols="50" >${intro[0]}</textarea>
              	<span>${valError.intro}</span>
          	</div>
          
          	<div class="unit" >
          		<center>
    	      	<input class="button" type="submit" value="提交" />
    	      	<input class="button" type="reset" value="重置" /></center>
        	</div>
        </form>
    	
    </body>
    </html>
    

    eweb没有自己写标签库,验证器验证得到的提示信息将会保存在request或session中,保存的key为"valError",它是一个map,所有的错误信息以字段名字为key进行保存.因此在jsp上可以这样来写:request.getAttribute("valError"); 不过我们肯定使用EL表达式来取数据啦.

    eweb新的验证器默认有提示信息,当开发者不显示提供提示信息内容,就会采用,下面列出这些默认的信息内容.
    @chinese // 请填写全中文
    @Date(format="yyMMdd") // 请填写正确的日期格式:yyMMdd
    @Email // 请填写正确的Email格式,例如:yourname@domain.com
    @Enum(words={"a","b"}) // 请输入下列的值:[a#b]
    @Equals(to="xxx") // 请确认{值}
    @Forbid(words={"a","b"}) // 请不要包含下列字眼:[a#b]
    @IDCard // 请填写正确的身份证号码,例如:441625198306051616
    @Int // 请填写正确的整数,例如:5
    @IP // 请填写正确的IP地址,例如:192.168.0.1
    @Length(min=2,max=5) // 请填写一个长度介于 2 到 5 之间的字符串
    @Phone // 请填写正确的家庭固话号码,例如0759-3365542
    @QQ // 请填写正确的QQ号码,例如549189557
    @Regex(pattren="xx") // 请填写匹配以下正则表达式的值:xx
    @Required // 请完成必填内容
    @Size(min=2,max=5) // 请填写一个大小介于 2 到 5 之间的整数
    @Url // 请填写正确的URL,例如:http://www.google.com
    @Zip // 请填写正确的邮编号码,例如:524088
    


    部署到tomcat,打开input.jsp:
    然后什么都不填写,提交:


    接着随便输入,提交:



    最后,全部填写正确,提交:





  • 几天暂时就这么多,最近在实习中,抱歉没有更新.
  • 最新更新了一个重复值的验证:


  • 更新一个自定义验证器注解:








  • [/list]
      相关解决方案