首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在实战2中指定复杂的表单验证?

如何在实战2中指定复杂的表单验证?
EN

Stack Overflow用户
提问于 2012-04-27 06:12:51
回答 3查看 2.7K关注 0票数 10

我了解如何在实战2中添加简单的表单验证,如nonEmptyText,但如何实现更复杂的验证,如“必须至少定义一个字段”?目前我在我的模型对象中抛出一个异常,如果它是用所有的None初始化的,但是这会产生一个讨厌的错误消息。我更喜欢在表单页面上看到友好的错误消息。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-12 03:41:44

您可以在表单定义中嵌套mappings/tuples,并添加关于映射、子映射、元组和子元组的verifying规则。然后,在您的模板中,您可以使用form.errors("fieldname")为特定字段或a组字段检索错误。

例如:

代码语言:javascript
复制
val signinForm: Form[Account] = Form(
    mapping(
        "name" -> text(minLength=6, maxLength=50),
        "email" -> email,
        "password" -> tuple(
            "main" -> text(minLength=8, maxLength=16),
            "confirm" -> text
        ).verifying(
            // Add an additional constraint: both passwords must match
            "Passwords don't match", password => password._1 == password._2
        )
    )(Account.apply)(Account.unapply)
)

如果您有两个不同的密码,则可以使用form.errors("password")在模板中检索错误

在本例中,您必须编写自己的Account.applyAccount.unapply来处理(String, String, (String, String))

票数 9
EN

Stack Overflow用户

发布于 2013-01-10 03:56:14

我已经改进了@kheraud的公认答案。您可以获取元组并将其转换回单个字符串。这允许您使用默认的应用/取消应用功能。

示例:

代码语言:javascript
复制
val signinForm: Form[Account] = Form(
    mapping(
        "name" -> text(minLength=6, maxLength=50),
        "email" -> email,
        "password" -> tuple(
            "main" -> text(minLength=8, maxLength=16),
            "confirm" -> text
        ).verifying(
            // Add an additional constraint: both passwords must match
            "Passwords don't match", password => password._1 == password._2
        ).transform(
            { case (main, confirm) => main },
            (main: String) => ("", "")
        )
    )(Account.apply)(Account.unapply)
)
票数 7
EN

Stack Overflow用户

发布于 2012-05-11 21:19:21

在玩中!框架,你可以通过使用flash变量来显示友好的错误消息。你只需要写一些像这样的东西;

代码语言:javascript
复制
flash.error("Oops. An error occurred");

到你的控制器。此错误消息将驻留在html页面上的位置应设置为,例如;

代码语言:javascript
复制
<h1>${flash.error}</h1>

玩!框架将把错误消息放在它找到${flash.error}的地方。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10342151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档