我有一个用Grails 2.0.4开发的应用程序,我很难编写我的域类中的一些值,例如如下
class Training{
String startTime ="09:00"
String endTime ="17:00"
}
但它不是很好的方法,进行更改是开销,像这样我有超过10个域类,其中值是硬编码的。
所以,我打算创建一个单独的配置Domain类,这样我就可以通过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)**
答案 0 :(得分:1)
查看Settings插件。我几乎在每个项目中都使用它。允许您创建任意数量的这些类型的配置设置,并在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" />
要在域类中使用它,我总是使用beforeInsert
或beforeUpdate
个事件。
处理String,Integer,BigDecimal或Date类型的设置。
如果您有多个相似的值(例如“培训开始时间”和“广告资源开始时间”),则需要存储,您也可以将其细分为inventory.startTime
和training.startTime
。