我已经尝试了一个多月,在grails中获取所选复选框的正确呈现,绑定和列表(请参阅此链接:How to get a list of checked boxes in grails)。
我可以使用以下代码从控制器中获取一个复选框列表: 包框架测试
导入groovy.io.FileType
class Read_dirController {
def index() {
def list = []
def dir = new File("/Users/ironmantis7x/Documents/business/test_files/APITest/utils")
dir.eachFileRecurse (FileType.FILES) { file ->
list << file
}
list.each {
println it.name.replaceFirst(~/\.[^\.]+$/, '')
}
render(view: "index", model: [name:list.name])
params.list('fileName')
}
def uri() {
def api_link = String
render(view: "index", model: [name:url_link])
}
def displayForm() { }
/*def submitForm(String fileName) {
render params.list('fileName')
//request.getParameterValues('fileName')
}*/
def submitForm() {
def values = request.getParameterValues('fileName')
//render(view: "submitForm")
params.remove "_"
render (view: "submitForm", model: [params.list('values')])
}
}
工作正常.... 我可以使用以下代码在gsp中显示它:
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<meta name="layout" content="main"/>
<title>API Automation Test Page</title>
</head>
<body>
<div class="body">
<h2>Automation Test Page</h2>
<h4>Please choose test(s) below ...</h4>
<br>
<h3>Tests</h3>
<br>
<div>
<style>
.columns3 {
-webkit-column-count: 3;
-moz-column-count: 3;
column-count: 3; }
</style>
<g:form action="submitForm">
<ul class="columns3">
<g:each in="${name}" var="fileName" >
<g:checkBox value="${false}" name="${fileName}" id="${fileName.replaceFirst(~/\.[^\.]+$/, '')}" /> ${fileName.replaceFirst(~/\.[^\.]+$/, '')}<br>
</g:each>
</ul>
<br>
<br>
<g:submitButton name="Submit"/>
</g:form>
</div>
<br>
<br>
<%-- <h4>Quick Test</h4>--%>
<%-- Input API manually: <g:textField name="url_link" value="${api_link}" /> --%>
<%-- <g:submitButton name="qtest" value="go!" />--%>
<%-- <br>--%>
<%-- <br>--%>
API Output Response: <br>
<g:textArea name="name" rows="300" cols="3000" style="resize: none;"/>
</div>
</body>
</html>
问题是: 当我选择一组复选框时,我得到一个空白列表(这里是提交表格gsp):
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<meta name="layout" content="main"/>
<title>API Automation Test Page</title>
</head>
<body>
<div class="body">
<h2>Automation Test Page</h2>
<h4>You have chosen the test(s) below.</h4>
<br>
<h3>Tests Chosen:</h3>
<br>
<div>
<%--<ul class="columns3">
<g:each in="${name}" var="fileName">
<g:checkBox value="${false}" name="${ 'fileName'}"/> ${fileName.replaceFirst(~/\.[^\.]+$/, '')}<br>
</g:each>
</ul>
--%>
<g:each in="${values}" var="tests">
<ul>
${'tests'} <br>
</ul>
</g:each>
<br>
<br>
</div>
</div>
</body>
</html>
当我通过Chrome检查绑定时,我会获得表单数据的详细信息:
._DS_Store:
login._sh:
login.sh:on
Submit:Submit
我有点迷失在我的错误上。 有人可以帮我详细解释一下呈现复选框列表的正确方法,以及如何正确呈现所选复选框的列表。
我还是傻瓜。但我觉得这是一个非常强大而丰富的工具,可以做很多事情。
谢谢!
ironmantis7x