のために動作しませvalidateable私はここで、命令に従っGrailsのは、非永続ドメインクラス
grails.validateable.classes = [liningtest.Warm']
その後のsrc /グルーヴィー/ウォームに追加。
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は機能しません(両方とも "空白false" & "size:0..25")。
これはGrailsのバグですか?はい、回避策はありますか?私はGrailsの1.3.3
UPDATEを使用してい
:私は単純化されたコードを更新しました。そして今、私は制約 "サイズ"を "空白"と一緒に使うことはできないが、それでも動作しないことを知っています。
テスト/ユニットでの私のテストクラス/ 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>
UPDATE 2:私は使用しませんユニットテストですが、コントローラー内でhasErrorsと呼ぶと、実行されますが偽の値が返されます。 (hasErrorsはWarm( 'Hihi'、3)でfalseを返します)。誰かが手掛かりを持っていますか?
UPDATE 3:私はビクターの方法に従いましたが、hasErrors()の前にvalidate()を呼び出すと問題が解決しました。しかし、私はまだ理解していない、なぜ、 "grails generate-all"コントローラがhasErrors()を使う前にvalidate()を呼び出す必要はないのですか?
以前にvalidate()を呼び出しましたか?アクションコード全体を持つことはできますか? –
また、Userクラスのプロパティ。 –
私は単にvalidate()関数ではなく、hasErrors()関数を呼び出します。ええ、すぐに質問を更新します。 –