Следующее, что вы, вероятно, захотите сделать, - это связать данные, полученные действием вашего контроллера, с объектом команды и проверить их.
ь имееточень хорошая поддержка для привязки параметров запроса к объекту домена и его ассоциациям. Это в значительной степени зависит от определения параметров запроса, которые заканчиваются.id
и автоматически загружать их из базы данных.
Однако не ясно, как заполнить ассоциации объекта команды. Возьмите следующий пример:
class ProductCommand {
String name
Collection<AttributeTypeCommand> attributeTypes
ProductTypeCommand productType
}
Этот объект имеет одностороннюю связь сProductTypeCommand
и многоплановая связь сAttributeTypeCommand
, Список всех типов атрибутов и типов продуктов доступен в реализации этого интерфейса.
interface ProductAdminService {
Collection<AttributeTypeCommand> listAttributeTypes();
Collection<ProductTypeCommand> getProductTypes();
}
Я использую этот интерфейс для заполнения списков выбора продуктов и типов атрибутов в GSP. Я также внедряю этот интерфейс в объект команды и использую его для «симуляции».attributeTypes
а такжеproductType
свойства объекта команды
class ProductCommand {
ProductAdminService productAdminService
String name
List<Integer> attributeTypeIds = []
Integer productTypeId
void setProductType(ProductTypeCommand productType) {
this.productTypeId = productType.id
}
ProductTypeCommand getProductType() {
productAdminService.productTypes.find {it.id == productTypeId}
}
Collection<AttributeTypeCommand> getAttributeTypes() {
attributeTypeIds.collect {id ->
productAdminService.getAttributeType(id)
}
}
void setAttributeTypes(Collection<AttributeTypeCommand> attributeTypes) {
this.attributeTypeIds = attributeTypes.collect {it.id}
}
}
На самом деле происходит то, чтоattributeTypeIds
а такжеproductTypeId
свойства привязаны к соответствующим параметрам запроса, а получатели / установщики "симулируют"productType
а такжеattributeTypes
свойства. Есть ли более простой способ заполнить ассоциации объекта команды?