List 如何在grails中获取复选框列表
在grails中,我试图获得一个复选框列表。 我有复选框列表,但我的问题有两个: 1) 当我单击列表中的单个项目并单击提交时,我只得到“on”值。如果单击多个复选框项,则会得到如下结果: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="$
[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"/>