如何将方法查到的信息在自己内部拿到

/**
 * 判断用户有没有绑定OpenID
 */
public void UserOpenIDIsExist() {
   /*UploadFile uploadFile = this.getFile();*/
   String openid = getPara("openid");
   System.out.println("*******" + openid);
   //判断传进来的openid是否为空
   if (StringUtil.isNotBlank(openid)&&openid!="1") {
      //如果不为空并且不等于1就去查询这个openid
      List scStudent = weChatBindService.findUserByOpenId(openid);
      //如果返回的集合大小=0,就返回错误,msg=0
      if (scStudent.size() == 0) {
         renderError("0");
      } else {
         //否则就返回查到的json字符串
         renderJson(scStudent);
      }
   } else {
      //如果传进来的openid为空,则返回请求参数异常
      renderError("请求参数异常");
   }


}

如图,我这个方法是前端传来一个id,我查到了就返回查到的学生信息,我现在另一个controller有一个方法,需要拿到这个学生的信息,不知道怎么接收数据,我有想过用setAttr,但是看了文档说是这个最好不要用来存放数据,于是我就放弃这个方法了,还有什么别的办法吗?

评论区

洛小风

2019-06-04 14:07

tranfer

2019-06-04 14:45

action是可以有返回值的~

洛小风

2019-06-04 14:59

@tranfer 仔细看了下文档,的确是的,感谢

洛小风

2019-06-04 15:08

@tranfer 多问您一下,文档说(Action可以有返回值,返回值可在拦截器中通过invocation.getReturnValue() 获取到,以便进行render控制。)
我能不能不通过拦截器获取,直接这样获取呢?
List list = weChatBindController.UserOpenIDIsExist();

tranfer

2019-06-04 15:23

@洛小风 哈哈,你没感觉进了一个怪圈吗?

洛小风

2019-06-04 15:39

@tranfer 啥意思...能不能这样写啊...

tranfer

2019-06-04 16:52

@洛小风 我感觉应该是不能直接这样写的,因为你要调用的方法的控制器是没有初始化的~我的意思是你应该把业务逻辑放到service里,而不是放到控制器的action里让别的控制器去用。。。

杜福忠

2019-06-04 17:27

@洛小风 你是要做个啥业务啊? 这样折腾?感觉你走歪了,说说业务,看大家有推荐的处理方式没

洛小风

2019-06-05 08:41

@杜福忠 我先不麻烦大家了,我先自己研究研究,看看文档,正如@tranfer 所说,业务逻辑应该放到service,我觉得他说的挺对,试试看!

zeroabc

2019-06-10 11:30

ThreadLocal,建议用netty的FastThreadLocal