工作,我跟着這裏的指令:http://www.grails.org/doc/latest/guide/7.%20Validation.htmlGrails的validateable不是非持久域類
,並加入到Config.groovy中:
grails.validateable.classes = [liningtest.Warm']
然後在的src /常規/暖色加入。 groovy(這是一個非持久域類):
package liningtest
import org.codehaus.groovy.grails.validation.Validateable
class Warm {
String name;
int happyCite;
Warm(String n, int h) {
this.name = n;
this.happyCite = h;
}
static constraints = {
name(size: 1..50)
happyCite(min: 100)
}
}
但它是絕對的對於「hasErrors」函數,t不起作用(「空白假」&「size:0..25」)。它總是返回false,即使當名稱> 25.
這是一個Grails錯誤,如果有,是否有任何解決方法?
我使用Grails 1.3.3
更新:我已經更新了簡化的代碼。現在我知道約束「大小」不能與「空白」一起使用,但仍然無效。
我的測試類測試/單位/ liningtest/WarmTests.groovy
package liningtest
import grails.test.*
class WarmTests extends GrailsUnitTestCase {
protected void setUp() {
super.setUp()
}
protected void tearDown() {
super.tearDown()
}
void testSomething() {
def w = new Warm('Hihi', 3)
assert (w.happyCite == 3)
assert (w.hasErrors() == true)
}
}
而且我得到了錯誤:
<?xml version="1.0" encoding="UTF-8" ?>
<testsuite errors="1" failures="0" hostname="evolus-50b0002c" name="liningtest.WarmTests" tests="1" time="0.062" timestamp="2010-12-16T04:07:47">
<properties />
<testcase classname="liningtest.WarmTests" name="testSomething" time="0.062">
<error message="No signature of method: liningtest.Warm.hasErrors() is applicable for argument types:() values: []
Possible solutions: hashCode()" type="groovy.lang.MissingMethodException">groovy.lang.MissingMethodException: No signature of method: liningtest.Warm.hasErrors() is applicable for argument types:() values: []
Possible solutions: hashCode()
at liningtest.WarmTests.testSomething(WarmTests.groovy:18)
</error>
</testcase>
<system-out><![CDATA[--Output from testSomething--
]]></system-out>
<system-err><![CDATA[--Output from testSomething--
]]></system-err>
</testsuite>
更新2:如果我不使用單元測試,但嘗試調用hasErrors在控制器中,它運行但返回false值。 (hasErrors用Warm返回false('Hihi',3))。有沒有人有線索?
更新3:我跟維克多的方式,現在如果我叫hasErrors之前的validate()問題就解決了()。但我仍然不明白,爲什麼「grails generate-all」控制器在使用hasErrors()之前不必調用validate()?
你之前調用過validate()嗎?我們可以有整個行動代碼嗎? – 2010-12-15 10:02:36
還有User類的屬性。 – 2010-12-15 13:14:36
我只是調用hasErrors()函數,而不是驗證()。是的,我會盡快更新這個問題。 – 2010-12-16 03:56:58