2012-06-27 13 views
1

我是Grails開發新手,在用於多選列表時遇到<g:select>問題。在我的表格中,用戶可以在多選列表框中選擇1到6個選項。然後他們可以回到編輯視圖進行更改。如何在Grails的編輯視圖中顯示multiselect列表框中的所有選定選項?

表單成功保存所選的所有選項,但如果選擇了多個選項,則列表框將不會顯示在編輯視圖中選擇了任何。如果只選擇了一個選項,則它會正確顯示在編輯視圖中。

有人請給我一些關於如何解決它的想法,以便所有選定的選項都顯示在編輯視圖中? (運行Grails的2.0.3)

這是我<g:select>代碼在GSP:

<g:select selected="true" multiple="true" name="securityGroup" 
      from="${['Mainframe', 'Finance', 'EDI', 'Item Master', 'Risk Management', 'Telecomm']}" 
      value="${MFAdminInstance?.securityGroup}"/> 

域:

類MFAdmin {

static constraints = { 

    name(nullable:false, blank:false, unique:true) 
    briefDetail(nullable:false, blank:false) 
    details(blank:false) 
    recsz(nullable:false, blank:false) 
    securityGroup(nullable:false, blank:false) 
    files(nullable:false, blank:false) 
    begJCL(nullable:false, blank:false) 
    addJCL1(nullable:true, blank:true) 
    addJCL2(nullable:true, blank:true) 
    endJCL(nullable:false, blank:false) 

} 

String name 
String briefDetail 
String details 
String recsz 
String securityGroup 
Integer files 
String begJCL 
String addJCL1 
String addJCL2 
String endJCL 

}

回答

0

正在嘗試對g:select標籤更明確,您的值$ {MFAdminInstance?.securityGroup}是一個列表。我建議是這樣的:

${MFAdminInstance?.securityGroup?.toList()} 

我能喜歡的東西來嘲笑你的代碼:

<g:form action="update"> 
<g:select selected="true" multiple="true" name="securityGroup" 
      from="${['Mainframe', 'Finance', 'EDI', 'Item Master', 'Risk Management', 'Telecomm']}" 
      value="${bars}"/> 
<g:submitButton name="submit" /> 
</g:form> 

並在我的行動foo2的,處理後:

def update() { 
    render(view: 'foo', model: [ 
      bars: params.securityGroup.toList() 
    ]) 
} 

正如你所看到的,當我定義在gsp中使用的列表bars時,我不得不明確告訴它,params.securityGroup是一個列表。最後如果沒有toList(),行爲是多選的缺失選擇。

編輯:

..inMFAdminInstance ...

List<String> securityGroup 

在你的控制器,你可以選擇的崗位值存儲到的東西,如您的域名...

def mf = new MFAdminInstance() 
mf.securityGroup = params.securityGroup?.toList() 
+0

謝謝爲了迴應!但是,我無法得到您的建議,使其工作。我認爲這可能與我的域名有關(在編輯部分發布) – jlk

+0

因此,您的域名securityGroup只是一個「字符串」。那是你的問題。當您向您的控制器發佈多重選擇時,會有多個securityGroup值,您可以從params.securityGroup中獲取它,這將成爲我的解決方案中的列表。但是,您需要將其作爲列表存儲在您的域中。查看我的更新,瞭解如何更改域以指定securityGroup是List。 – Tri

相關問題