Попробуйте установить и взломать леса и использовать DomainClassPropertyComparator
в своих gsp-s. Шаблоны скаффолдов выполняют Collections.sort () для компаратора по умолчанию, но вы можете использовать явный.
Причиной может быть отсутствие Hibernate: без него DomainClassPropertyComparator
не будет работать, а Grails использует SimpleDomainClassPropertyComparator
- я смотрю на DefaultGrailsTemplateGenerator.groovy
Можно, конечно, предоставить еще один Comparator
, который будет сравнивать порядок объявленных полей.
EDIT:
Например, после установки лесов у меня есть файл <project root>\src\templates\scaffolding\edit.gsp
. Внутри есть такие строчки:
props = domainClass.properties.findAll{ ... }
Collections.sort(props, comparator. ... )
где comparator
- переменная, предоставленная лесами Grails. Вы можете сделать:
props = ...
Collections.sort(props, new PropComparator(domainClass.clazz}))
где PropComparator - что-то вроде
class PropComparator implements Comparator {
private Class clazz
PropComparator(Class clazz) { this.clazz = clazz }
int compare(Object o1, Object o2) {
clazz.declaredFields.findIndexOf{it.name == o1}
- clazz.declaredFields.findIndexOf{it.name == o2}
}
}