我有一个在 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" />
为了在域类中使用它,我一直使用
beforeInsert
或 beforeUpdate
事件。处理 String、Integer、BigDecimal 或 Date 类型的设置。
如果您有多个相似的值(例如“培训开始时间”和“库存开始时间”),您需要存储您可以将它们分段为
inventory.startTime
和 training.startTime
也是。
关于grails - 如何在 Grails 中创建特定于应用程序的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11339685/