0

Grails 2.0.4で開発されたアプリケーションがあり、ドメインクラスの値の一部をハードコーディングしています。例は次のとおりです。

class Training{
  String startTime ="09:00"
  String endTime  ="17:00"
}

しかし、それは良いアプローチではありません。変更を加えることはオーバーヘッドです。このように、値がハードコーディングされている10を超えるドメインクラスがあります。

そのため、別の構成ドメインクラスを作成することを計画しています。これにより、UI(ビュー)から値を入力して永続化できます。

これは私の計画です、それに対処するための解決策はありますか?

更新しました:

import org.grails.plugins.settings.*

class PublicTraining extends Training{
    Date startDate = Setting.valueFor("startDate")
}

設定「startDate」を作成しました。コントローラではSetting.valueFor( "startDate")メソッドを使用して設定にアクセスできますが、ドメインクラスではアクセスできません

私が得ているエラーは以下のとおりです

*Caused by: org.hibernate.InstantiationException: could not instantiate test objectcom.springpeople.tms.PublicTraining
    ... 5 more
*Caused by: java.lang.reflect.InvocationTargetException
    ... 5 more
Caused by: groovy.lang.MissingMethodException: No signature of method: org.grails.plugins.settings.Setting.methodMissing() is applicable for argument types: () values: []
    at org.grails.plugins.settings.Setting.valueFor(Setting.groovy:53)**
4

1 に答える 1

1

設定プラグインをチェックしてください。ほとんどすべてのプロジェクトで使用しています。これらのタイプの構成設定をいくつでも作成し、GSP またはコントローラー/サービス/などでそれらにアクセスできます。それらを管理するための CRUD GUI も提供します。

//programatically
import org.grails.plugins.settings.*

def startTime = Setting.valueFor("startTime")
def endTime = Setting.valueFor("endTime")

//gsp
<g:setting valueFor="startTime" default="9:00" encodeAs="HTML" />

ドメインクラスで使用するために、私は常にbeforeInsertorbeforeUpdateイベントを使用してきました。

タイプ String、Integer、BigDecimal、または Date の設定を処理します。

類似した複数の値 (「トレーニング開始時間」や「在庫開始時間」など) がある場合は、保存する必要がinventory.startTimeあり、それらをセグメント化することもできますtraining.startTime

于 2012-07-05T20:16:48.820 に答える