我正在尝试使用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中的这些对象?
我想出了这个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"))