如何将枚举绑定到 playframework 表单?

2024-06-23

我有一个以下形式的枚举:

object MatchFilterType extends Enumeration {
  type MatchFilterType = Value
  val gt = Value("gt")
  val lt = Value("lt")
  val eq = Value("eq")
}

尝试在我的控制器中创建一个表单 val:

 case class SearchRequest(mft: MatchFilterType, queryText: String, locations: List[String])

 val searchForm: Form[SearchRequest] = Form(
    mapping(
      "mft" -> ????????,
      "queryText" -> nonEmptyText,
      "locations" -> list(text)
    )(SearchRequest.apply)(SearchRequest.unapply)
  )

我在这个项目中使用 play 2.6.x。

如何在 Form val 中映射我的枚举?


首先创建一个隐式的Formatter使用枚举withName方法接受一个字符串并将其转换为枚举:

implicit def matchFilterFormat: Formatter[MatchFilterType] = new Formatter[MatchFilterType] {

  override def bind(key: String, data: Map[String, String]) =
    data.get(key)
        .map(MatchFilterType.withName(_))
        .toRight(Seq(FormError(key, "error.required", Nil)))

  override def unbind(key: String, value: MatchFilterType) = 
    Map(key -> value.toString)
}

然后使用Forms.of创建一个FieldMapping:

Form(...,
     "mft" -> Forms.of[MatchFilterType],
     ...)

请记住MatchFilterType.withName(_)如果字符串不是枚举成员,将抛出异常,因此更新bind方法来根据需要处理这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将枚举绑定到 playframework 表单? 的相关文章

  • Scala:列表中不同的foldRight实现

    我刚刚发现 scala 我在 2 12 上 提供了完全不同的实现向右折叠 for 不可变列表 and 可变列表 不可变列表 List scala override def foldRight B z B op A B gt B B reve
  • 缓存隐式解析

    为了减少项目的编译时间 我缓存了通过隐式查找解析的某些类型类 但这看起来有点麻烦 因为直接的实现不起作用 scala gt implicit val x String implicitly String x String null 隐式查找
  • Scala 将字符串转换为映射

    转换这个最快的方法是什么 a ab b cd c cd d de e ef f fg 进入 scala 中的可变映射 我从 500MB 文件中读取了这个输入字符串 这就是我关心速度的原因 如果您的 JSON 像您的示例一样简单 即一系列键
  • 为什么 Vector[Option[Int]] 上的 flatMap 其映射器函数结果不是 Vector[Option[Int]] 有效?

    例如 Vector Some 1 Some 2 Some 3 None flatMap n gt n 产生一个Vector 1 2 3 而不是给出错误 正如我在其他语言中看到的那样 flatMap当你有一个产生嵌套的映射器函数时使用 所以我
  • 我可以使用从 Java 实现 java 接口的 scala 类吗?

    我正在学习 Scala 很好奇是否可以 创建一个在 Scala 中实现 Java 接口的对象 将对象编译成类文件并将其打包 使用 Java 中的对象 我想在 scala 中实现一个自定义的 lucene 查询解析器 并能够让其他人从 jav
  • 通过Listener获取Spark thrift服务器查询中读取的行数

    我正在尝试为我们的 ST 服务器构建一个监控系统 到目前为止 诸如记录查询 检索的行 红色和花费的时间之类的事情都很好 我已经实现了一个自定义侦听器 我能够毫无问题地检索查询和时间 侦听SparkListenerSQLExecutionSt
  • 在 Scala 中定义具有多个隐式参数的函数

    如何定义具有多个隐式参数的函数 def myfun arg String implicit p1 String implicit p2 Int doesn t work 它们必须全部放入一个参数列表中 并且该列表必须是最后一个 def my
  • zip 样式 @repeat 嵌套形式

    repeat非常有用 然而 我遇到了嵌套表单的障碍 我需要制作一个比赛日程表 它有 2 个属性 日程数据 比赛日期 时间 地点 对手 和提交球队备注 例如 由于冬季风暴 1 月 7 日的比赛已移至1 月 9 日在 夏威夷 表单映射基于 ca
  • Scala 中的 Case 对象与枚举

    是否有关于何时使用的最佳实践指南案例类 http en wikipedia org wiki Scala 28programming language 29 Case classes and pattern matching 或 case
  • Scala Spark:将数据框中的双列转换为日期时间列

    我正在尝试编写代码来将日期时间列 date 和 last updated date 转换为 mm dd yyyy 格式以进行显示 它们实际上是 unix 时间转换为双精度数 我该怎么做呢 import org joda time impor
  • 超时对“Future”进行排序

    我利用了TimeoutScheduler介绍于Scala Futures 内置超时 https stackoverflow com questions 16304471 scala futures built in timeout 但是 现
  • scala 中“迭代 Seq 或如果为空”的更好版本?

    是否有更短 更好的方法来执行以下操作 mySeq map elmt gt do stuff if mySeq isEmpty some other stuff Ps 我正在使用 PlayFramework 这意味着在模板中使用 所以如果我错
  • JavaFX 控制器如何访问其他服务?

    我将 JavaFX 2 与 Scala 一起使用 我有class Application extends javafx application Application它执行诸如读取应用程序配置等操作 然后它会启动主窗口 该主窗口需要连接到一
  • 使用 Scala 的解析器组合器时如何忽略不匹配的前面文本?

    我真的很喜欢解析器组合器 但是当我不关心相关文本之前的文本时 我对我提出的提取数据的解决方案并不满意 考虑这个小型解析器来获取货币金额 import scala util parsing combinator case class Amou
  • 将数组中的值提取到元组中

    有没有一种简单的方法可以将列表的值提取到 Scala 中的元组中 基本上是这样的 15 8 split map toInt mkTuple 15 8 或者我可以采取其他方式 val x y 15 8 split map toInt 如果你把
  • Scala:折叠与折叠左

    我试图了解fold 和foldLeft 以及各自的reduce 和reduceLeft 如何工作 我使用 Fold 和 FoldLeft 作为示例 scala gt val r List ArrayBuffer 1 2 3 4 10 sca
  • Scala 中的逆变和协变

    abstract class Bhanu A val m List A gives error contravariant type A occurs in covariant position in type gt List A of v
  • IntelliJ、Akka 和配置文件

    使用时akka http akka io 我放置akka conf in src main resources 当我run通过 sbt akka conf被正确识别 但当我运行 IntelliJ 时却没有 即使在gen idea 实现这一目
  • 结构化流式自定义重复数据删除

    我有一个从 kafka 进入 dataFrame 的流数据 我想根据 Id 删除重复项并根据时间戳保留最新记录 样本数据是这样的 Id Name count timestamp 1 Vikas 20 2018 09 19T10 10 10
  • 如何使用 flex/bison 解析 Scala 语法中的新行?

    我想用flex和bison解析Scala语法 但我不知道如何解析 Scala 语法中的换行符 如果我将换行符解析为令牌T NL 这是Toy l例如 a zA Z a zA Z0 9 yylval gt literal strdup yy t

随机推荐

  • 全局 Git 忽略

    我想将 Git 设置为全局忽略某些文件 我添加了一个 gitignore文件到我的主目录 Users me 并且我添加了以下行 tmproj 但它并没有忽略这种类型的文件 知道我做错了什么吗 您需要设置您的全局core excludesfi
  • 如何循环遍历sql中的json数组以选择特定索引处的值

    我有一个存储过程 用于查询数据库并将结果存储在 Json 变量中 现在我想按索引循环遍历 Json 数组以获取特定值 有人可以告诉我如何实现这一目标吗 以下是我的查询 DECLARE json NVARCHAR Max DECLARE na
  • Mac 加载命令损坏

    在我们的一个应用程序上签名 代码设计 失败malformed object unknown load command 9 在网上做了一些研究后 我发现加载命令是可执行文件头中的特殊命令 内核使用它们来进行段加载 http 0xfe blog
  • @objc 协议使 swift 编译器崩溃

    我写了我的协议 旨在有一些 optional方法 但 swift 编译器崩溃了 这有效 protocol SessionDelegate TODO these should all be optional func willOpenSess
  • 比较两个文件的各自字段并以特定格式输出所需的内容

    我正在比较两个文件 food1 txt 文件并比较 food2 txt 文件 如下所示 cat food1 txt pizza 1ea chicken 5ea tooboo 4ea orange 2ea cat food2 txt pizz
  • Windows Phone 7 上的 App.config?

    各位 我正在 Windows Phone 7 上构建一个应用程序 我的应用程序需要一些配置 例如 Web 服务 URL 数据库名称 这些配置可能会在部署期间随时需要更改 但我不想重新构建应用 在WPF应用程序中 我经常将这些配置保存在App
  • fetch get 请求返回空标头

    Headers was indeed sent via http However fetch returned empty headers 事实证明我需要设置Access Control Expose Headers包含我想公开的标题
  • pip 安装在共享目录上(Windows)

    我尝试创建自己的 Pypi 存储库 尊重https www python org dev peps pep 0503 https www python org dev peps pep 0503 我的想法是将其放在共享目录中 我使用的是 W
  • 放大发布导致 AccessDenied 错误

    我部署了一个简单的网络应用程序S3 via amplify publish 主办方有Cloudfront启用 我在设置托管时选择了放大中的 PROD 环境 并且我正在工作eu central 1地区 但每当我尝试访问Cloudfront网址
  • sed:替换文本块

    我有一堆文件 从一段代码开始 我试图用另一个代码块替换 Replace
  • 安装软件包时出现无法加载软件包 %s 错误

    我正在 Delphi 2007 上进行测试 我的小组项目由 2 个包组成 包运行 bpl 它被标记为 仅运行时 并包含一个名为 uMyTestRun pas 的单元 其中定义了一个空的 TFrame 后代 unit uMyTestRun i
  • NoSuchMethodError:org.slf4j

    我正在将storm与python一起使用 我使用此命令在本地运行拓扑 mvn compile exec java Dexec classpathScope compile Dexec mainClass my Topology 并得到这个错
  • 使用 Authlogic 仅使用用户名进行身份验证

    有一个基于 Java Struts 的母应用程序 它也处理身份验证 我的 Rails 应用程序正在集成到母应用程序中 它使用 authlogic 当然 要求是 一旦有人登录到母应用程序 他们应该能够自动访问我的 Rails 应用程序 而无需
  • Linux - 查找特定文件之后和之前的文件

    我试图在我的计算机上查找特定文件创建前 1 小时和创建后 1 小时创建的文件 这是我尝试过的方法 find root newermt 2012 10 04 1800 and newermt 2012 10 04 2000 exec ls l
  • ins SpriteKit,“选择”我的手指在移动时触摸到的所​​有精灵

    所以我尝试学习 SpriteKit 同时构建一个我认为简单的益智游戏 我有一个 5x5 网格的不同颜色的 SKSpriteNode 我想要的是能够触摸一个节点 然后水平或垂直移动我的手指并检测我的手指正在触摸的所有节点 就像我正在 选择 它
  • 让列在 CSS 网格中换行

    使用时如何指定最大列数display grid 当内容对于空间来说太宽 或小于最小尺寸 时它会自动中断 有没有办法在没有媒体查询的情况下做到这一点 例如 当没有足够的内容空间时 我有以下内容不会中断为单列模式 grid display gr
  • Drupal - 在模板内渲染子视图/部分

    如何创建一个可以在多个模板页面中重复使用并且可以将变量传递到其中的 html 片段 有些像这样 但显然更复杂一些 ul li li ul Thanks Use hook theme http api drupal org api drupa
  • 仅从 URL 获取 URI 段

    我正在尝试使用正则表达式获取 URI 段 示例 URI http abc com hello hi bye humm ok hi ya yaya wow waaah 我在尝试 lt w r g 但它不能正常工作 查询字符串没有被排除 wow
  • Python:写入大文件时,保持文件打开还是打开文件并根据需要追加到文件中?

    我想知道如何最好地处理 python 中的大文件写入 我的Python代码多次循环运行外部程序 古老的Fortran 具有奇怪的输入文件格式 读取其输出 一行文件 进行一些非常简单的处理 然后写入编译后的输出文件 外部程序执行速度很快 远低
  • 如何将枚举绑定到 playframework 表单?

    我有一个以下形式的枚举 object MatchFilterType extends Enumeration type MatchFilterType Value val gt Value gt val lt Value lt val eq