我们通过 Shibboleth 对 Web 应用程序的一些用户进行身份验证。该应用程序是使用 Play 框架构建的。我想将来自 Shibboleth 的 header 绑定(bind)到 Play 表单。根据the documentation ,使用 Spring 执行数据绑定(bind)。
通常,绑定(bind)就可以了。如果你有一个像
这样的表单模型类public User {
public String name;
}
然后将表单与 name
字段绑定(bind)将自动匹配这两个字段。
来自 Shibboleth 的一个 header 采用 Shib-Identity-Provider
形式。我想将它绑定(bind)到我的表单模型的一个字段,但连字符不是 Java 中字段名称的合法字符。有没有办法可以将 header 名称映射到合法的 Java 字段名称?这也更普遍地适用,我可以配置数据绑定(bind),以便我不需要使用相同的表单字段名称和 Java 类字段名称来使绑定(bind)工作吗?
最佳答案
您绝对可以从数据绑定(bind)中创建一个具有不同字段名称的类。
例如,您可以创建一个 案例类 Shib
,如下所示:
case class Shib (provider: String)
并从 Play mapping
val formMapping = mapping(
"Shib-Identity-Provider" -> text
)(Shib.apply)(Shib.unapply)
然后在您的 Controller 中,您可以直接从请求中绑定(bind)数据。
您还可以实现一个自定义的 Reads
,它会做类似的事情。
关于java - 将带有连字符的标题绑定(bind)到 Play 框架表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40524995/