java - 将带有连字符的标题绑定(bind)到 Play 框架表单

标签 java spring forms data-binding playframework

我们通过 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

定义数据绑定(bind)函数
val formMapping = mapping(
   "Shib-Identity-Provider" -> text
)(Shib.apply)(Shib.unapply)

然后在您的 Controller 中,您可以直接从请求中绑定(bind)数据。 您还可以实现一个自定义的 Reads,它会做类似的事情。

关于java - 将带有连字符的标题绑定(bind)到 Play 框架表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40524995/

相关文章:

java - 使用 jsoup 仅从同一类中的某些 div 中提取文本

java - HttpClient 在运行时不存在

javascript - 如何正确创建并使表单上的生日字段可提交?

java - 如何将 "Data.Json"文件从 Assets 保存到内部存储,然后将其用于读/写

具有 "generic"字段的 Java 对象

java - 由于输入结束, jackson 无法映射空数组,没有内容可映射到对象

java - Maven能否将依赖拉入项目?

java - 验证 Spring 服务层

javascript - 如何计算表格中的所有值?

php - AJAX 联系表单无法发布数据