java如何在Grails 4上配置域封送器。十、
我正在尝试修复Grails 3的升级。x域封送器到Grails 4。x、 请看下面我使用的代码
import org.grails.datastore.mapping.model.PersistentEntity
class DomainClassMarshaller {
public static final List<String> appendFields = ['id']
static Closure appendMarshaller(String clazz, List<String> fieldsToInclude) {
def grailsDomainClassMappingContext
return { domainItem ->
def domain = grailsDomainClassMappingContext.getPersistentEntity(clazz)
def results = [:]
domain.persistentProperties.each { field ->
results[field.name] = domainItem[field.name]
}
def fields = []
fields.addAll(appendFields)
fields.addAll(fieldsToInclude)
//println "size:" +fields.size();
fields.each { name ->
results[name] = domainItem[name]
//println "name :"+name+" value:"+domainItem[name];
}
return results
}
}
static Closure limitIncludes(Class clazz, List<String> fieldsToInclude) {
def grailsDomainClassMappingContext
return { domainItem ->
def domain = grailsDomainClassMappingContext.getPersistentEntity(clazz)
def results = [:]
def fields = []
fields.addAll(appendFields)
fields.addAll(fieldsToInclude)
fields.each { name ->
results[name] = domainItem[name]
}
return results
}
}
static Closure excludes(Class clazz, List<String> fieldsToExclude = []) {
def grailsDomainClassMappingContext
return { domainItem ->
def domain = grailsDomainClassMappingContext.getPersistentEntity(clazz)
def results = [:]
domain.persistentProperties.each { field ->
if (!(field.name in fieldsToExclude))
results[field.name] = domainItem[field.name]
}
appendFields.each { name ->
results[name] = domainItem[name]
}
return results
}
}
}
由于某种原因,我不喜欢这种新的方法,我一直在找工作
Caused by: java.lang.NullPointerException: Cannot invoke method getPersistentEntity() on null object
我不知道您是否有任何建议,非常感谢
共 (0) 个答案