2017-11-23 21:54

给个例子你参考:package com.platform.admin.agent.user;

import com.platform.base.BaseController;
import com.platform.base.BaseValidator;
import com.jfinal.core.Controller;

/**
* 用户信息验证
* Created by sloft.com on 2016/12/12.
*/
public class AgentUserValidator extends BaseValidator {
@Override
protected void validate(Controller c) {
BaseController cc = (BaseController) c;
if ("GET".equals(cc.getRequest().getMethod())) {
return;
}

setShortCircuit(true);

switch (getActionKey()) {
case "/mbz/login":
validateRequired("username", "userNameMsg", "帐户不能为空");
// validateMobile("username", "userNameMsg", "手机格式不正确");

validateRequired("password", "passwordMsg", "密码不能为空");
// validateCaptcha("captcha", "captchaMsg", "验证码不正确");
break;
case "/admin/password":
validateRequired("password1", "password1Msg", "请输入原始密码");
validateRequired("password2", "password2Msg", "请输入新密码");
break;
case "/admin/user/pass":
validateRequired("pass1", "pass1_msg", "请输入原密码");
validateRequired("pass2", "pass2_msg", "请输入新密码");
break;
case "/admin/user/add":
validateRequired("role", "roleMsg", "请选择所属角色");
if (cc.getPara("role").equals("0")) {
addError("roleMsg", "请选择所属角色");
}

String username = cc.getPara("username");
if (AgentUserService.me.isAccountExists(username)) {
addError("usernameMsg", "该手用户已被注册,请重新输入");
}

if ("admin".equals(username) || "superadmin".equals(username) || "root".equals(username)) {
addError("usernameMsg", "该用户名为系统内置用户,请重新输入");
}

validateRequired("phone", "phoneMsg", "手机号码不能为空");
validateMobile("phone", "phoneMsg", "请输入正确的手机号码");
validateRequired("password", "passwordMsg", "密码不能为空");
validatePassword("password", "passwordMsg", "密码格式不正确,请输入由字母或者下划线组成的格式");
validateString("password", 1, 32, "passwordMsg", "密码不能超过32个字");

validateRequired("nickname", "nicknameMsg", "姓名/昵称不能为空");
validateString("nickname", 1, 32, "nicknameMsg", "昵称不能超过19个字");
break;
case "/admin/user/update":
validateRequired("role", "roleMsg", "请选择所属角色");
if (cc.getPara("role").equals("0")) {
addError("roleMsg", "请选择所属角色");
}
// validateRequired("phone", "phoneMsg", "手机号码不能为空");
// validateMobile("phone", "phoneMsg", "请输入正确的手机号");
validateRequired("password", "passwordMsg", "密码不能为空");
validatePassword("password", "passwordMsg", "密码格式不正确,请输入由字母或者下划线组成的格式");
validateString("password", 1, 32, "passwordMsg", "密码不能超过32个字");

validateRequired("nickname", "nicknameMsg", "姓名/昵称不能为空");
validateString("nickname", 1, 32, "nicknameMsg", "昵称不能超过19个字");
break;
}
}

@Override
protected void handleError(Controller c) {
c.renderJson();
}
}

2017-11-23 16:19

@happyboy 利害,接受新的事物是要有耐心加技巧的,从这点上看你是成功的。致少在公司项目上你已经推广开了。

2017-11-23 16:16

简单算了下,有很多朋友需要你的这个东西,感谢分享。

2017-11-23 16:00

你用JFinal做服务端接口就好了,完全没问题的,当然也有一些人直接用来直连数据库的这种少数人干的事,也是可用的,如用ActiveRecord做orm查询数据库也是支持的。不过还是建议你写接口调用好处分别为, 统一、通用、安全、维护简单。接口与客户端面离,当前你需求上是只有app用到接口,以后有可能提出接公众号、小程序的,这样你多个端用一套接口就好了。

2017-11-23 15:50

用HttpKit的get或post方法去调用。然后用JsonKit去序列或反序列化就可以了,但注意下,C#写的服务端接口生成json是有头部的。

2017-11-23 15:37

就按你上面的格式传就好了。

2017-11-23 15:35

你看下这个是否对你有帮助:https://segmentfault.com/q/1010000004647912

2017-11-23 15:21

另外推荐你一个更简单的,直接都不用ShiroPlugin插件的:http://www.jfinal.com/share/410

2017-11-23 15:19

学习下这个:https://gitee.com/log4j/jfinalshiroplugin#note_784400

2017-11-22 18:24

@小螃蟹 你上面就说用getParaToInt这个有问题,负责任的告诉你getParaToInt()这个设计就是接收纯int类型的参数,你想取如"75%"就只得用getPara()这个来拿。

2017-11-22 18:20

@小螃蟹 那你用getPara()获取后,自己后台一个正则不就得了嘛

2017-11-22 00:16

另外getPara这个是通用的数据接收方法,建议你用这个就好了。

2017-11-22 00:16

getParaToInt本来就是只处理int类型的数据,你这个75%明显就不是int类型当然报错啦,这个没有什么可纠结的,一个不是相同的数据类型肯定不能强行对号入座的呢。

2017-11-09 21:59

例子:
Test2 test2 = test2Service.findByid(getParaToLong("id"))
Test test = testService.findById(getParaToLong("id"));
test.put("test2", test2)
以上就可以把test2这个对角放到put到test中去 ,使用时就是Test2 test2 = test.get("test2");就好了。

2017-10-14 18:20

利害,这个太方便了,谢谢分享。