Grails中的空白约束不起作用

时间:2014-06-13 18:26:46

标签: grails constraints

我在Grails中处理空白约束。 我有一个addWebsites.gsp如下:

<g:form controller="SiteURL" action="websiteAdded">
    <label for="siteURL">ADD URL:</label>
    <g:textField name="siteURL" value="${siteURL?.siteURL}"
        style="width: 400px;height: 22px;"></g:textField>
    <br />
    <input type="submit" value="Save">
</g:form>

我想要textField siteURL上的空白约束。域类为SiteURL.groovy

class SiteURL {
    String siteURL
    static constraints = { 
        siteURL blank:false 
    }
}

我的SiteURLController.groovy课程如下:

class SiteURLController {
    def addWebsites() { }

    def websiteAdded(){

        if(request.method == 'POST') {
            def u = new SiteURL()
            u.properties ['siteURL']
            if(u.siteURL =="") {
                u.errors.rejectValue("siteURL", "cmsprofiler.siteurl.empty")
                return [siteURL:u]
            } else if(u.save()) {
                session.siteURL= u
                redirect(controller: "SiteURL", action: "websiteAdded")
            } else {
                return [siteURL:u]
            }
        }
    }

    def websiteNOTAdded(){ }
}

尽管受到限制,但当我将文本字段留空并且仍然将我带到websiteAdded viewpage时,它不会显示错误。我无法弄清楚出了什么问题。我希望在用户尝试按提交而不输入网址的情况下显示错误。任何帮助,将不胜感激。感谢

1 个答案:

答案 0 :(得分:1)

您的代码如下所示:

 def u = new SiteURL()
 u.properties ['siteURL']
 if(u.siteURL =="") {
     u.errors.rejectValue("siteURL", "cmsprofiler.siteurl.empty")
     return [siteURL:u]
 }

if条件永远不会成立。您正在创建一个新的SiteURL对象,并且从不为siteURL属性赋值,因此它将为null。

您的代码的行为完全符合我的预期。

您可能认为u.properties ['siteURL']正在做一些有意义的事情,但事实并非如此。所有这一切都是检索siteURL属性的值。你永远不会给它赋值。