我是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
}
答案 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()