【问题标题】:Display Form Validation Error Using mkString()使用 mkString() 显示表单验证错误
【发布时间】:2013-05-04 05:32:32
【问题描述】:

我正在尝试通过在我的表单上使用内置的 mkString 方法调用将错误消息显示到我的视图中。然而结果却不尽如人意:

我有:

    @productForm("name").errors().mkString(", ")

并且视图呈现以下内容:

    ValidationError(name,error.required,[])

我怎样才能显示确切的消息?

我正在使用 play 2.1.1(它是一个 java 项目)

谢谢

【问题讨论】:

    标签: playframework playframework-2.0


    【解决方案1】:

    @productForm("name").errors() 返回ValidationError 对象的集合。您想在验证错误消息集合上运行 mkString,因此您需要首先将您的 ValidationError 集合映射到字符串集合:

    @productForm("name").errors().map(n => n.message).mkString(",")
    

    我认为现在这将返回您error.required,这仍然不是您想要的。因此,当您映射时,您可能希望映射到 Messages API 查找:

    @productForm("name").errors().map(n => Messages(n.message)).mkString(",")
    

    【讨论】:

    • 完美!这行得通。虽然稍作修改,即应用于消息的 get() 方法:@productForm("name").errors().map(n => Messages.get((n.message)).mkString(","))
    【解决方案2】:

    如果你想要字段名称的错误而不是使用错误而不是错误

    @productForm.error("name").message
    

    如果您需要错误的参数,例如最大长度或您可以使用的任何参数

    @productForm.error("name").arguments()
    

    【讨论】:

    • @productForm.error("name").message 将返回密钥,因此在我的示例中这将是 error.name.required - 因此需要将其映射到值。可以这样实现:@Messages.get(productForm.error("name").message)
    猜你喜欢
    • 2020-09-19
    • 2018-01-02
    • 2018-04-19
    • 2014-02-20
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多