播放框架@ValidateWithPayload
Posted
技术标签:
【中文标题】播放框架@ValidateWithPayload【英文标题】:Play Framework @ValidateWithPayload 【发布时间】:2020-05-06 15:59:53 【问题描述】:我正在尝试使用 Java 将有效负载传递给 Play Framework 中的 validate(ValidationPayload)。我无法访问存储在返回 TypedMap 的 payload.getAttrs() 中的值。
我尝试通过调用 validate 方法 payload.getAttrs().getOptional(TypedKey.create("Cookies")) 来访问 Cookie,但我总是得到一个空值。
当我使用 IntelliJ 评估表达式时,我看到 attrs 包含 Cookie、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 中的这些对象?
【问题讨论】:
【参考方案1】:我发现 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"))
【讨论】:
您是否找到了一种方法来从已通过 play 插入的 TypedMap 中检索对象?例如会话? 我只是想从类似的帖子中链接这个答案,以防其他人偶然发现这个问题并想知道如何从正在播放的 TypedMap 访问现有对象***.com/questions/66901698/…以上是关于播放框架@ValidateWithPayload的主要内容,如果未能解决你的问题,请参考以下文章
iOS - 使用音乐的背景播放功能,使用MediaPlayer框架播放影片(Swift)