List 如何在grails中获取复选框列表

List 如何在grails中获取复选框列表,list,grails,checkbox,groovy,List,Grails,Checkbox,Groovy,在grails中,我试图获得一个复选框列表。 我有复选框列表,但我的问题有两个: 1) 当我单击列表中的单个项目并单击提交时,我只得到“on”值。如果单击多个复选框项,则会得到如下结果: [Ljava.lang.String;@5a37f9f7 2) 。我没有检查项目的列表或名称 以下是我在gsp中复选框的代码: <g:form action="submitForm"> <ul class="columns3"> <g:each in="$

在grails中,我试图获得一个复选框列表。 我有复选框列表,但我的问题有两个:

1) 当我单击列表中的单个项目并单击提交时,我只得到“on”值。如果单击多个复选框项,则会得到如下结果:

[Ljava.lang.String;@5a37f9f7
2) 。我没有检查项目的列表或名称

以下是我在gsp中复选框的代码:

<g:form action="submitForm">
    <ul class="columns3">
        <g:each in="${name}" var="fileName" >
            <g:checkBox value="${false}" name="${ 'fileName'}" /> ${fileName.replaceFirst(~/\.[^\.]+$/, '')}<br>
        </g:each> 
    </ul>
    <br>
    <br>
    <g:submitButton name="Submit"/>
</g:form>   

    ${fileName.replaceFirst(~/\.[^\.]+$/,'')}


下面是控制器代码(groovy):

class Read\u dirController{
def index(){
def列表=[]
def dir=新文件(“/home/ironmantis/Documents/business/test_files”)
dir.eachFileRecurse(FileType.FILES){file->

list您可以使用request.getParameterValues(“fileName”)方法,这将以这种方式给出字符串数组中的选中复选框

def submitForm() { 
def values = request.getParameterValues("fileName") 
//here values contains string array which are selected in checkbox
} 

您可以使用漂亮的命令对象来实现这一点。为此,首先创建一个具有布尔字段的类RequestCO

class RequestCO {
  boolean isChecked;
  String name;
}

这将为您提供所有选中的复选框结果

普惠制

<g:form action="process">
<ul class="columns3">
    <g:each in="${["one", "two", "three"]}" var="fileName" status="i">
        <g:hiddenField name="requestCOs[${i}].name" value="${fileName}"/>
        <g:checkBox name="requestCOs[${i}].isChecked"/> ${fileName}<br>
    </g:each>
</ul>
<g:submitButton name="Submit"/>

    ${fileName}

更新:我添加了渲染参数列表(“文件名”)现在,它列出了所有选中的复选框,但只列出了状态。我仍然需要实际名称。当单击多个复选框时,您将获得一个值数组。因此,您不应该使用字符串类型变量进行自动数据绑定。要知道您从请求接收到的所有参数,您可以使用
param进行检查。keySet()
内部控制器操作。是在控制器中使用还是在视图(gsp)中使用?在ControllerHMM中使用…我尝试了,但没有返回任何值。我的语法是:render request.getParameterValues(“文件名”)。正确吗(它编译并运行时没有编译错误-但结果是一个错误。我想您需要使用name=“fileName”而不是name=“${'fileName'}”来代替name=“fileName”
class RequestParentCO {
List<RequestCO> requestCOs = [].withLazyDefault { new RequestCO() }
}
def submitForm(RequestParentCO parentCO) {
    println parentCO.requestCOs.findAll { it.isChecked }
}
<g:form action="process">
<ul class="columns3">
    <g:each in="${["one", "two", "three"]}" var="fileName" status="i">
        <g:hiddenField name="requestCOs[${i}].name" value="${fileName}"/>
        <g:checkBox name="requestCOs[${i}].isChecked"/> ${fileName}<br>
    </g:each>
</ul>
<g:submitButton name="Submit"/>