我有一個查詢頁面,此頁面可以選擇類別和子類別,同時創建新的查詢。例如:如何使用Grails保存數據庫中的類別和相關子類別
Main Category
Sub Category
Sub Category
Sub Category
Main Category
Sub Category
Sub Category
Sub Category
Main Category
Sub Category
Sub Category
Sub Category
用戶可以從查詢頁面中選擇多個類別和子類別。
以下是域歸類相關類別和子類別:
Category.groovy
class Category {
String name
String description
static constraints = {
}
static hasMany = [ subCategories: SubCategory ]
}
SubCategory.groovy
class SubCategory {
String name
static hasMany = [requirements: Enquiry]
static belongsTo = [ category: Category]
static constraints = {
requirements nullable:true
}
}
注:以下域用於保存選定的類別和子類別從查詢頁面。
class RegisteredCategories {
Enquiry enquiry
Category category
static constraints = {
}
static hasMany = [ subCategories: SubCategory ]
}
GSP模板,查詢頁面上顯示的類別和子類別:
<g:each in="${marketlist}" status="j" var="category">
<g:hiddenField id="${j}" name="catId.${category.id}" value="${category?.id}" />
<DIV class="market-name">
<p>${category.name}</p>
</DIV>
<g:each in="${category.subCategories}" status="i" var="subCategory">
<div>
<g:checkBox class="cb1-element" id="check${i}" name="subId.${subCategory.id}" value="on"/>
<label for="check${i}" > ${subCategory.name}</label>
</g:each>
</g:each>
**創建EnquiryController.groovy行動,我要保存類別和子類別**
def create = { EnquiryCommand enquiryCommand ->
def enquiry = null
try {
enquiry = new Enquiry(params)
//def sub = Category.get(params.catId)
def sub = params.list('catId').get(0)
def subCat= params.list('subId').get(0)
//enquiry.properties = params
/*
def String[] tags = params.tagsList.split(",")
for (def tag : tags) {
Tag tagObject = new Tag();
tagObject.tag = tag ;
enquiry.addToTags(tagObject)
}
*/
int enquiryId = enquiryService.createEnquiry(enquiry ,enquiryCommand)
if (!enquiry.hasErrors()){
flash.put("enquiry", "enquiry created")
redirect(action: sentEnquiry)
}else {
render (view: "showCreateEnquiry" , model:["enquiryInstance" : enquiryCommand])
}
}catch (DataserviceException e){
render (view: "showCreateEnquiry" , model:["enquiryInstance" : enquiryCommand])
}
問題:
如何在控制器中獲取多個選定的類別和子類別並保存在數據庫中。 有人建議我在創建動作時創建一個常規的Map並從GSP模板中獲取類別和子類別的列表。還建議我使用Map的鍵來存儲來自類別和值的id,以存儲與該類別相關的子類別id的列表。
怎麼可以做到這一點?
嗨@emilan,我可以在這個問題上得到幫助嗎? –