К сожалению, объекты команд не помогают с моделью ввода для представления, они специально разработаны, чтобы помочь модели вывода для привязки и проверки параметров запроса. Однако вы можете использовать свою собственную модель представления на основе командного объекта, если вы готовы углубиться в метапрограммирование, чтобы добиться привязки данных для создания модели представления.
Вот основной подход. Следующий код создает объект Command, который затем можно передать в качестве модели представлению в контроллере:
class ItemCommand {
// attribute declarations ...
public void bindData(def domainInstance){
domainInstance.properties.keySet().each { prop ->
if(prop == "class"){
// not needed
} else if(prop == "metaClass") {
// not needed
} else if(this.properties.containsKey(prop)){
this."${prop}" = domainInstance."${prop}"
}
}
}
Это позволит вам связывать данные из разных объектов домена, вызывая bindData для каждого из объектов домена.
Это суть решения, которое я использую. Вам нужно будет хранить идентификаторы различных объектов домена (и атрибут версии) как скрытые поля, если вы собираетесь обновлять объекты домена.