2

Grails 2 では、HTML 5 の構成をドライに保つために、gsp でドメイン オブジェクトの制約を参照することができました。grails 3 (3.1.10 と 3.2.0.RC1 の両方を試した) で、grails 2 でテストしたコードに対してエラーが発生しました。属性 phone で制約の一致を参照し、それを HTML 5 パターンに使用しようとしています。スキャフォールディングはこのコードを生成するために使用しますが、Grails 3 の場合、スキャフォールディングはフィールド プラグインを使用して生成するため、そのコードは表示されません。何か案は?

ドメイン オブジェクト コードは次のとおりです。

class Disruption {

static constraints = {
    phone(matches:/^[0-9]{10}$/, nullable:true)
    email(email:true, nullable:false)
}

String name
String phone
String email

gsp コードは次のとおりです。

    <div class="form-group ${hasErrors(bean: disruption, field: 'phone', 'error')}">
    <label for="phone" class="control-label col-sm-3">
        Phone
    </label>
    <div class="col-sm-2">
        <g:textField name="phone" style="width: 7em" class="form-control" title="Phone 10 digits" pattern="${disruption.constraints.phone.matches}" maxlength="10" placeholder="##########" value="${disruption.phone}"/>
    </div>
</div>

例外は次のとおりです。

URI /disruption/create クラス java.lang.NullPointerException メッセージ リクエストの処理に失敗しました。ネストされた例外は org.grails.gsp.GroovyPagesException: GroovyPageView の処理中にエラーが発生しました: [views/disruption/create.gsp:92] タグの実行中にエラーが発生しました: 行 [58] の式 [disruption.constraints.phone.matches] を評価中にエラーが発生しました: 取得できませんnullオブジェクトのプロパティ「電話」は、nullオブジェクトのプロパティ「電話」を取得できないことが原因です

4

1 に答える 1