Play Framework @ValidateWithPayload - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь передать полезные данные для проверки (ValidationPayload) в Play Framework, используя Java. Я не могу получить доступ к значениям, хранящимся в payload.getAttrs (), который возвращает TypedMap.

Я попытался получить доступ к файлам cookie, вызвав метод проверки payload.getAttrs (). GetOptional (TypedKey.create ("Cookies ")), но я всегда получаю ноль.

Когда я оцениваю выражение с помощью IntelliJ, я вижу, что атрибуты содержат файлы cookie, Fla sh и другие. Но я не могу получить доступ к этим ценностям. Я вижу значения на снимке экрана Expression Evaluator

public String validate(Constraints.ValidationPayload payload) {
        TypedMap attrs = payload.getAttrs();
        Optional<Object> baseDomain = payload.getAttrs().getOptional(TypedKey.create("baseDomain"));

        Locale value = payload.getAttrs().get(TypedKey.create("selectedLang"));
        return "String";
    }

Как мне получить доступ к этим объектам, хранящимся в TypedMap?

1 Ответ

0 голосов
/ 08 мая 2020

Я понял, что карта TypedMap использует TypedKeys. Типизированный ключ уникален для каждого ЭКЗАМЕНА ключа. Это означает, что вам нужно получить из typedMap тот же экземпляр ключа, который использовался для вставки в карту. Создание нового ключа вызовет пустой или нулевой ответ.

Это должно работать :

TypedKey<String> baseDomainKey = TypedKey.create("baseDomain")
payload.getAttrs().addAttrs(baseDomainKey, "domain")
String domain = payload.getAttrs().get(baseDomainKey)

Это не сработает однако:

TypedKey<String> baseDomainKey = TypedKey.create("baseDomain")
payload.getAttrs().addAttrs(baseDomainKey, "domain")
String domain = payload.getAttrs().get(TypedKey.create("baseDomain"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...