0

我有一个在 Grails 2.0.4 中开发的应用程序,我正在对我的域类中的一些值进行硬编码,示例如下

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

但它不是好方法,进行更改是开销,像这样我有 10 多个域类,其中的值是硬编码的。

所以,我打算创建一个单独的配置域类,从而我可以通过 UI(视图)输入值并将它们持久化。

这是我的计划,grails中是否有任何解决方案来处理它。

更新:

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 或 Contollers/Services/etc 中访问它们。它甚至提供了一个 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 回答