1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

新闻 Hasor-2.4.3 发布,使用表单验证 下载

Discussion in '软件资讯' started by 漂亮的石头, 2016-08-19.

  1. 漂亮的石头

    漂亮的石头 版主 Staff Member

    Joined:
    2012-02-10
    Messages:
    487,979
    Likes Received:
    47
    Hasor 2.4.3 正式发布了,Hasor 是一款基于 Java 语言的应用程序开发框架,它的核心设计目标是提供一个简单、且必要的环境给开发者。开发者可以在此基础上,通过 Hasor 强有力的粘合机制,构建出更加完善的应用场景。同时 Hasor 的各种内置插件也会帮助开发者进行快速开发。而所有内置插件,在初始化的时都做了智能加载,只有用到了它们才会被加载到框架中。否则这些内置插件在初始化期间就会放弃加载自己。基于目前 Hasor 内核上已经发展出 DB、Web、Restful 三大基础框架。

    该版本更新如下:


    • 新增:

    • 01.新增 Htmlspace工具类:StringEscapeUtils、EntitiesUtils。工具来源为:apache-common

    • 改进:

    • 01.改进启动日志输出。


    • 02.WebController 增加一组 putData 方法用于输出到渲染模版中。


    • 03.JdbcOperations接口可以通过依赖注入被注入到 Service 中。


    • 04.TransactionTemplateManager 代码优化,修复潜在的 npe 异常情况。


    • 05.ValidErrors 接口继承自 RenderData 获取参数更加方便。


    • 06.WebController 类重度优化,删除了一些重复的方法,增添表单验证相关的方法。

    • 新增:

    • 01.Restful 框架整合 Validation 插件增加请求参数 @Valid 验证功能。


    • 02.注解 @Valid 支持场景化验证。

    • 改进::

    • 01.env.config 加载环境变量遇到名称冲突时的,Bug。


    • 02.DBModule 类,在声明 Aop 类匹配的时候从任意类,改为需要标记 @Transactional 注解的类。

    • 改进:

    • 01.env.config 功能的优化。


    一个简单的用户登陆Demo

    /**
    * 本地登陆
    * @version : 2016年1月1日
    * @author 赵永春(zyc@hasor.net)
    */
    @MappingTo("/account/login.{action}")
    public class Login extends Action {
    //
    public void execute(@PathParam("action") String action, @Valid("SignIn") @Params LoginForm loginForm, RenderData data) throws IOException {
    if (StringUtils.equalsIgnoreCase("do", action)) {
    //
    // - 登录请求
    this.putData("loginForm", loginForm);
    if (!data.isValid()) {
    renderTo("htm", "/account/login.htm");//验证失败
    } else {
    renderTo("htm", "/account/login.htm");//验证通过
    }
    } else {
    //
    // - 登录页面
    data.clearValidErrors();//清空验证信息,避免瞎显示
    if (this.isLogin()) {
    String ctx_path = data.getAppContext().getServletContext().getContextPath();
    data.getHttpResponse().sendRedirect(ctx_path + "/account/my.htm");
    }
    }
    }
    }

    FormBean

    @ValidBy(LoginFormValidation.class)
    public class LoginForm {
    @ReqParam("email")
    private String email;
    @ReqParam("account")
    private String account;
    @ReqParam("password")
    private String password;
    @ReqParam("redirectURI")
    private String redirectURI;
    //
    //
    ....
    ....
    }

    表单验证器

    public class LoginFormValidation implements Validation<LoginForm> {
    @Override
    public void doValidation(String validType, LoginForm dataForm, ValidErrors errors) {
    if (StringUtils.equalsIgnoreCase("SignIn", validType)) {
    if (!StringUtils.equalsIgnoreCase("admin", dataForm.getAccount())) {
    errors.addError("account", "帐号不是admin。");
    }
    //
    //
    } else if (StringUtils.equalsIgnoreCase("SignUp", validType)) {
    errors.addError("message", "暂不支持注册功能。");
    //
    }
    }
    }

    使用了 Freemarker 之后页面对于验证结果的显示

    <form class="form-horizontal">
    <input type="hidden" name="redirectURI" value="${req_redirectURI}"/>
    <input name="email" type="text" value="${loginForm.email}">
    <!-- 帐号的验证结果 -->
    <#if validData["account"]?? >${escapeHtml.escapeHtml(validData["account"]?join(","))}</#if>
    <input name="password" type="password">
    <!-- 密码的验证结果 -->
    <#if validData["password"]?? >${escapeHtml.escapeHtml(validData["password"]?join(","))}</#if>
    <input type="submit">
    </form>
    Hasor-2.4.3 发布,使用表单验证下载地址
     
Loading...