grails - 如何在 Grails 中创建特定于应用程序的配置

标签 grails grails-2.0

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

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

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

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

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

更新:
import org.grails.plugins.settings.*

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

我创建了一个设置'startDate'。我可以在 Controller 中使用 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)**

最佳答案

查看 Settings插入。我几乎在每个项目中都使用它。允许您创建任意数量的此类配置设置并在 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" />

为了在域类中使用它,我一直使用 beforeInsertbeforeUpdate事件。

处理 String、Integer、BigDecimal 或 Date 类型的设置。

如果您有多个相似的值(例如“培训开始时间”和“库存开始时间”),您需要存储您可以将它们分段为 inventory.startTimetraining.startTime也是。

关于grails - 如何在 Grails 中创建特定于应用程序的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11339685/

相关文章:

grails - 如何重写 GORM/Grails 的 addTo* 和 RemoveFrom* 方法?

grails - Grails formRemote更新错误的div

grails - 如何在 Ubuntu 中将 Grails 版本从 2.1.2 升级到 2.2.3

mysql - Grails GORM MySQL 生成 TEXT 或 LONGTEXT 列

unit-testing - Grails 2.0:发布测试flash.message

windows - 如何调试无响应的Grails应用程序?

Grails 获取 hasMany 中的任何子级

grails - 无法在 intellij idea 社区版中导入 grails 3 项目

grails - 使用参数查询关联的域对象给出错误 : Cannot query property "params" - no such property on class

grails - 除了使用 transient 关键字之外,还有其他任何方法可以阻止Grails域类中字段(也是域类对象)的持久性吗?