如何获取grails中的复选框列表

时间:2016-03-29 23:38:06

标签: list grails checkbox groovy

在grails中,我正在尝试获取已选中复选框的列表。 我有复选框列表,但我的问题是两个:

1)当我点击列表中的单个项目并单击提交时 - 我只获得值" on"。如果我点击多个复选框项,我会得到这样的结果:

function dataURItoBlob(dataURI) {
    var binary = atob(dataURI.split(',')[1]);
    var array = [];
    for(var i = 0; i < binary.length; i++) {
        array.push(binary.charCodeAt(i));
    }
    return new Blob([new Uint8Array(array)], {type: 'image/jpeg'});
}

2)。我没有得到列表或选中项目的名称。

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

[Ljava.lang.String;@5a37f9f7

这是控制器代码(groovy):

<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>   

我尝试将id绑定到复选框,但我一直收到异常错误。

你能给予任何帮助我真的很感激;我是grails的新手。

ironmantis7x

3 个答案:

答案 0 :(得分:2)

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

class RequestCO {
  boolean isChecked;
  String name;
}

class RequestParentCO {
List<RequestCO> requestCOs = [].withLazyDefault { new RequestCO() }
}

现在,您只需将所有请求绑定到您的操作中的RequestParentCO:

def submitForm(RequestParentCO parentCO) {
    println parentCO.requestCOs.findAll { it.isChecked }
}

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

<强> GSP

<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"/>

答案 1 :(得分:1)

这样,

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

答案 2 :(得分:0)

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