1

我是 Grails 开发的新手,并且<g:select> 在将它用于多选列表时遇到了问题。在我的表单中,用户可以在多选列表框中选择 1 到 6 个选项。然后他们可以返回编辑视图进行更改。

表单成功保存了所有选择的选项,但如果选择了多个选项,则列表框不会显示在编辑视图中选择了任何选项。但是,如果只选择了一个选项,它会正确显示在编辑视图中。

有人可以给我一些关于如何修复它的想法,以便所有选定的选项都显示在编辑视图中吗?(运行 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

}

4

1 回答 1

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()
    ])
}

正如您所看到的,当我定义bars要在 gsp 中使用的列表时,我必须明确告诉它 params.securityGroup 是一个列表。最后没有那个toList(),行为是多选的缺失选择。

编辑:

..inMFAdminInstance...

List<String> securityGroup

在您的控制器中,您可以将选定的帖子值存储到您的域中,例如...

def mf = new MFAdminInstance()
mf.securityGroup = params.securityGroup?.toList()
于 2012-06-27T21:09:59.260 回答