我使用spring mvc框架和thymeleaf模板引擎 问题是,我有1页多个复选框迭代唱百里叶th:每个迭代器。当我点击多个复选框我想将复选框值传递给控制器方法..
html内容
<table>
<tr th:each="q : ${questions}">
<h3 th:text="${q.questionPattern.questionPattern}"></h3>
<div>
<p >
<input type="checkbox" class="ads_Checkbox" th:text="${q.questionName}" th:value="${q.id}" name="id"/>
</p>
</div>
</tr>
</table>
*的 控制器 *
@RequestMapping(value = Array("/saveAssessment"), params = Array({ "save" }))
def save(@RequestParam set: String, id:Long): String = {
var userAccount: UserAccount = secService.getLoggedUserAccount
println(userAccount)
var questionSetQuestion:QuestionSetQuestion=new QuestionSetQuestion
var questionSet: QuestionSet = new QuestionSet
questionSet.setUser(userAccount)
questionSet.setSetName(set)
questionSet.setCreatedDate(new java.sql.Date(new java.util.Date().getTime))
questionSetService.addQuestionSet(questionSet)
var list2: List[Question] = questionService.findAllQuestion
var limit=list2.size
var qustn:Question=null
var a = 1;
for( a <- 1 to limit ){
println( a );
qustn= questionService.findQuestionById(a)
questionSetQuestion.setQuestion(qustn)
questionSetQuestion.setQuestionSet(questionSet)
questionSetQuestion.setCreatedDate(new java.sql.Date(new java.util.Date().getTime))
questionSetQuestionService.addQuestionSetQuestion(questionSetQuestion) } "redirect:/teacher/Assessment.html" }
答案 0 :(得分:4)
我认为你几乎拥有它。使用复选框,您只能使用表单发回一条信息...即值。因此,如果您在用户单击提交按钮时尝试确定选中了哪些复选框,那么我会让复选框全部使用一个名称...如“id”(与您的完全一样)。值是问题的实际ID(再次像您一样)。提交后,“id”将是一个String数组,其中包含已检查的复选框的所有值。
因此,您的控制器方法需要将名为“ids”的参数映射到参数“id”,这是一个字符串[]。现在,对于每个id,您可以调用questionService.findQuestionById。
(我不是Groovy大师所以没有代码示例sry:)
答案 1 :(得分:3)
我使用了JSTL和JSP,百里香是新的东西。我阅读了THYMELEAF文档。
有一节介绍多值复选框。
<input type="checkbox"
class="ads_Checkbox"
th:text="${q.questionName}"
th:value="${q.id}" name="id"/>
在上面的代码中,我们没有将值绑定到命令对象的字段。而是尝试这样做
<input type="checkbox"
class="ads_Checkbox"
th:text="${q.questionName}"
th:field="*{selectedQuestions}"
th:value="${q.id}" />
这里selectedQuestions
是spring命令对象中存在的数组对象。