Bel*_*lla 10 grails groovy json render converter
我使用的是grails-1.3.2和hbase-0.2.4.
我有以下域类:
class MyClass{
String val1
String val2
String val3
//----
}
class MyClassController{
def someAction = {
def myClass = new MyClass()
//----
String valAsJson = (myClass as JSON)
render valAsJson
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否有任何简短的方法只渲染部分属性(例如渲染除val3属性以外的所有属性)?
你可以这样做:
def myClass = MyClass.get(1)
//include
render myClass.part(include:['val1', 'val2']) as JSON
//except
render job.part(except:['val2','val3']) as JSON
Run Code Online (Sandbox Code Playgroud)
Bootstrap.groovy:
import org.codehaus.groovy.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor as Events
class BootStrap {
def grailsApplication
def excludedProps = [Events.ONLOAD_EVENT,
Events.BEFORE_DELETE_EVENT, Events.AFTER_DELETE_EVENT,
Events.BEFORE_INSERT_EVENT, Events.AFTER_INSERT_EVENT,
Events.BEFORE_UPDATE_EVENT, Events.AFTER_UPDATE_EVENT]
def init = { servletContext ->
grailsApplication.domainClasses.each{ domainClass ->
domainClass.metaClass.part= { m ->
def map= [:]
if(m.'include'){
m.'include'.each{
map[it]= delegate."${it}"
}
}else if(m.'except'){
m.'except'.addAll excludedProps
def props= domainClass.persistentProperties.findAll {
!(it.name in m.'except')
}
props.each{
map[it.name]= delegate."${it.name}"
}
}
return map
}
}
}
def destroy = {
}
}
Run Code Online (Sandbox Code Playgroud)
如果您知道如何创建我们自己的插件,那么只需为此创建一个插件,以便您可以在所有grails应用程序中使用它.
| 归档时间: |
|
| 查看次数: |
8146 次 |
| 最近记录: |