jfinal在反射调用方法时报空指针异常

发布于 2021-11-28 08:56:51 字数 4383 浏览 800 评论 8

@jfinal  JFinal @绝望的八皮 我在用java反射的方式调用一个service类中的一个方法去执行User.dao.findFirst方法时 在Model中的find方法中config及conn都是null,请问如何解决?

CTRL中 代码如下:

Service serviceMethod = clz.getMethod(method,RequestEntity.class).getAnnotation(Service.class);
                    String login_token = req.getLogin_token();
                    LoginContext logincontext=new LoginContext();
                    if (serviceMethod.loginCheck() == true) {//验证是否登陆
                        login_token = req.getLogin_token();
                        logincontext = CacheKit.get(Constant.LOGIN_TOKEN, login_toen);//从缓存中读取登陆用户信息。
                        this.rendJson(resp);
                        return;
                    }
                    try {
                        clz.newInstance();
                        Method method1=clz.getMethod(method,RequestEntity.class);
                        resp=(ResponseEntity)method1.invoke(clz.newInstance(),req);
                        //记录日志:
                        if(serviceMethod.log()==true&&logincontext.user!=null) {
                            try {
                                LogsService.me.insertLog(logincontext.getUser(), serviceMethod,req);
                            } catch (Exception e1) {
                                log.error("记录日志异常!logKey=>"+serviceMethod.logKey(),e1);
                            }
                        }

                    } catch (Exception e) {
                        log.error("执行方法异常:",e);
                        resp.code = "error";
                        resp.setMsg(e.getMessage());
                    }




UserService代码:

public class UserService extends BaseService<User> {
    /***
     * 登陆
     * @param requestEntity
     * @return
     * @throws ServiceException
     */
    @Service(loginCheck = false,method = "POST",log = true,logKey = "log_user_login",logType =0,fun = "",operat = "登陆")
    public ResponseEntity login(RequestEntity requestEntity) throws ServiceException{
        ResponseEntity resp=new ResponseEntity();
        Map<String,Object> formData=(Map<String,Object>)requestEntity.getData();
        /*String vctoken=(String)formData.get(Constant.VCODE_TOKEN);
        String vcode=(String)formData.get("vcode");
        if(CommonService.me.validVCode(vcode,vctoken)==false){
            resp.msg="验证码错误!";
            resp.success=false;
            return resp;
        }*/
        String pwd=(String)formData.get("pwd");
        String login_name=(String)formData.get("login_name");
        User user=User.dao.login(login_name,pwd);
        if(user==null) {
            resp.setSuccess(false);
            resp.setMsg("用户名或密码错误!");
        }else{//将用户信息存放在缓存中。 生成对应login_token
            LoginContext loginContext=new LoginContext();
            loginContext.user=user;
            loginContext.person=Person.dao.findById(user.get("person_id"));
            String login_token= UUID.randomUUID().toString();
            CacheKit.put(Constant.CACHE_KEY_1DAY,login_token,loginContext);
            Map<String,Object>data=new HashMap<>();
            data.put(Constant.LOGIN_TOKEN,login_token);
            data.put("user",user);
            data.put("perseon",loginContext.person);
            resp.data=data;
        }
        return resp;
    }




User model中的代码

/**  * Created by loyin on 15-1-30.  */ 
@TableBind(tableName = "users") 
public class User extends BaseEntity<User> {
 public static final String tableName="users"; public static User dao=new User(); 
/**  * 登陆  * @param login_name 登陆用户名  * @param pwd 密码 md5加密  * @return  */ 
 public User login(String login_name,String pwd){ return this.findFirst("select * from "+tableName+" where login_name=? and pwd=?",login_name,pwd);
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

把昨日还给我 2021-11-29 23:22:49

能否将你的代码贴出来瞧瞧,我的代码都贴出来了

多彩岁月 2021-11-29 23:21:39

我自己也是有个modelext基类再继承的呢,,和你用法一样的但是可以。。那你改动了什么?

晚风撩人 2021-11-29 22:41:59

我的是User继承->BaseEntity->Model。

倚栏听风 2021-11-29 21:56:01

BaseEntity是不能实例化的bean。

少女情怀诗 2021-11-29 19:17:52

引用来自“龙影”的评论

问题已经解决,由于使用的jfinal ext的自动绑定表插件不能扫描我自定义的BaseEntity类,需要将AutoBindtableplugin进行重写。

后知后觉 2021-11-29 19:16:30

问题已经解决,谢谢关注。主要还是我又继承了一个BaseEntity类来做扩展。而jfinal-ext的是直接对Model的子类来做绑定的。

回眸一笑 2021-11-29 15:09:21

可以试试 jfinal-tablebind

南汐寒笙箫 2021-11-28 18:35:32

问题已经解决,由于使用的jfinal ext的自动绑定表插件不能扫描我自定义的BaseEntity类,需要将AutoBindtableplugin进行重写。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文