2016-09-14 6 views
1

grails 2では、html 5構成を維持するために、gspでドメインオブジェクトの制約を参照できました。 grails 3(3.1.10と3.2.0.RC1の両方を試しました)では、Grails 2で正常にテストしたコードでエラーが発生しました。私は、属性の電話で制約の一致を参照しようとしており、HTML 5のパターンに使用しています。 Scaffoldingはこのコードを生成するために使用しますが、Grails 3の場合、足場はプラグインを使用してそのコードを見ることはできません。何か案は?ここでgrailsドメインオブジェクトの制約を使用した3 gspが失敗する

は、ドメインオブジェクトコードである:ここで

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 /破壊は/ クラス のjavaを作成します.lang.NullPointerException メッセージ リクエストprocessi失敗しました。 org.grails.gsp.GroovyPagesException:GroovyPageViewの処理中にエラーが発生しました:[views/disruption/create.gsp:92]タグの実行中にエラーが発生しました:[58ページの[disruption.constraints.phone.matches]ヌルオブジェクトのプロパティ 'phone' によって発生しました ヌルオブジェクトでプロパティ 'phone'を取得できません

答えて

3

ドメインオブジェクトは、constraintsMapを使用する必要があります。以下の例を参照してください。

  <g:textField name="phone" style="width: 7em" class="form-control" title="Phone 10 digits" pattern="${disruption.constrainedProperties.phone.matches}" maxlength="10" placeholder="##########" value="${disruption?.phone}"/> 

またはコマンドが

  <g:textField name="phone" style="width: 7em" class="form-control" title="Phone 10 digits" pattern="${searchCommand.constraintsMap.phone.matches}" maxlength="10" placeholder="##########" value="${searchCommand?.phone}"/> 
オブジェクトについて
関連する問題