①:先定义一个后台验证form表单的类
②:controller中对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 }); } }如果验证不通过:
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")); } }