Play框架@ValidateWithPayload

问题描述 投票:0回答:1

我正在尝试使用Java将有效负载传递给Play框架中的validate(ValidationPayload)。我无法访问存储在payload.getAttrs()中的值,该值返回TypedMap。

[我试图通过调用验证方法有效负载(payload.getAttrs()。getOptional(TypedKey.create(“ Cookies”))来访问Cookies,但我总是得到一个空值。

[当我使用IntelliJ评估表达式时,我看到attrs包含Cookies,Flash等。但是我无法访问这些值。 I can see the values in the Expression Evaluator screenshot

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中的这些对象?

java playframework play-framework-2.7
1个回答
0
投票

我想出了这个TypedMap映射使用TypedKeys。键入的密钥对于密钥的每个INSTANCE都是唯一的。这意味着您需要使用与放入地图相同的键实例从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"))
© www.soinside.com 2019 - 2024. All rights reserved.