承诺返回play.libs.F$Promise@65722df2而不是字符串值

时间:2018-11-27 21:51:43

标签: java playframework promise future

所以我只是在Play中进行实验,我想看看是否可以使用promise函数返回String。

在此示例中,我尝试获取UserFirstName,而是获取play.libs.F$Promise@65722df2的值。

  public static String retrieveUserFirstName(String ch, Service Service,
                                     SessionContext SessionContext, String aN) {

      return Service.getInformation(UteContextArgs.getProcessingContext(),
              SessionContext, aN, ch)
              .filter(info -> info instanceof Information)
              .filter(info -> Constants.ch.equalsIgnoreCase(ch))
              .map(info -> {
                  Information information = (Information) info;
                  return information.getFirstName();
              }).toString();
  }


  public void trySomething (){

      String userFirstName = retrieveUserFirstName(ch, Service,
                                     SessionContext, aN);

      logger.info (context, "here is the userfirstname={}", userFirstName);

  }

  public F.Promise<Information> getInformation(...) {
  ...
  }

在运行时,如果我尝试以任何方式将变量作为字符串操作,则会出现“空指针异常”。

日志显示:

  here is the userfirstname=play.libs.F$Promise@ca3706e

1 个答案:

答案 0 :(得分:1)

您当前正在获得labelText: { backgroundColor: "red", ... 本身的字符串表示形式,而不是其Promise结果。

您需要get承诺的结果。