jfinal中form表单后台数据验证

时间:2021-10-31 18:56:34

①:先定义一个后台验证form表单的类

jfinal中form表单后台数据验证

②:controller中对form表单中数据处理的时候,调用验证类

jfinal中form表单后台数据验证

③:token是我使用了shiro插件,所以配合使用验证类之前,我需要定义shiro的一些功能

public void index() {
    this.createToken(TOKEN);
    this.render("/WEB-INF/admin/demand/add.html");
}
在进入保存页面的时候,我需要创建一个token,然后在add.htnl中接收token

<div class="form-group">
    <label class="col-md-3 control-label"><span class="mustWrite">*</span>项目概况</label>
    <div class="col-md-9">
        <textarea name="project.DESCRIPTION" class="form-control" style="height:200px"
                  maxlength="2000"/>
        <small class="help-block">请输入项目概况(2000)</small>
    </div>
</div>
#(token)
<div class="panel-footer">
    <div class="row">
        <div class="col-sm-9 col-sm-offset-3">
            <button class="btn btn-warning" type="reset">重置</button>
            <button class="btn btn-mint" type="submit">保存</button>
        </div>
    </div>
</div>
④:在form表单体交的时候,token会自动带过去,只有在验证类通过的情况下,token类验证才会执行。

save方法;

function save() {
    var data = common_ajax.ajaxFunc("/demand/save", $('#editForm').serialize(), "json", null);
    if (data.success) {
        pointLion.alertMsg("保存成功!", "success", "small", function () {
            doPjax(ctx + "/demand");
        });
    }else{
        $.niftyNoty({
            type : 'danger',
            message : data,
            container : 'floating',
            timer : 5000
        });

    }
}
如果验证不通过:


jfinal中form表单后台数据验证

token验证类:

public class TokenValidator extends Validator {

   @Override
   protected void validate(Controller c) {
      validateToken("token", "error", "不要重复提交/页面过期,请刷新");
   }

   @Override
   protected void handleError(Controller c) {
      c.renderJson("error", c.getRequest().getAttribute("error"));
   }

}