如何在Grails的编辑视图中显示多选列表框中的所有选定选项?

时间:2012-06-27 17:24:31

标签: grails select groovy listbox multi-select

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

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

有人可以告诉我如何修复它,以便在编辑视图中显示所有选定的选项吗? (运行Grails 2.0.3)

以下是GSP中的<g:select>代码:

<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

}

1 个答案:

答案 0 :(得分: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()