Обещание, возвращающее play.libs.F$Promise@65722df2 вместо строкового значения - PullRequest
0 голосов
/ 28 ноября 2018

Так что я просто экспериментирую в Play и хочу посмотреть, смогу ли я использовать функцию обещания для возврата 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 голосов
/ 28 ноября 2018

В настоящее время вы получаете строковое представление самого Promise, а не его String результата.

Вам необходимо get результата Обещания.

...