我有一个包含函数列表的jsp页面。在控制器中,我从数据库中获取此列表并将其传递给jsp。
@RequestMapping(value = "/functionlist", method = RequestMethod.GET)
public ModelAndView functionList(Model model) throws Exception {
ModelAndView mv = new ModelAndView("functionList");
mv.addObject("functionList", getFunctionsFromDB());
return mv;
}
在我的jsp页面中,我使用以下函数列表创建表
<table id="table">
<thead>
<tr>
<th></th>
<th>Name</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${not empty functionList}">
<c:forEach var="function" items="${functionList}">
<tr>
<td><input name="id" value="${function.id}" hidden></td>
<td>${function.name}</td>
<td>
<input type="checkbox" id="${function.id}" value="${function.action}"></td>
</tr>
</c:forEach>
</c:when>
</c:choose>
</tbody>
</table>
<button type="submit" name="save">Save</button>
我还将函数id赋予复选框id。
我的功能实体如下
public class Function {
private Integer id;
private String name;
private Boolean action;
...
}
我想按保存按钮并进入控制器“/函数列表/保存”我的复选框值列表。
很少的事情。首先,您应该考虑一个表单对象,它是视图和控制器之间的交换实体。表单实体将类似于以下内容:
public class Form {
private List<Function> functions;
//getters & setters
}
其次,由于您使用的是Spring MVC,因此您应该利用
<form:form commandName="form" action="/your/url">
<c:forEach items="${form.functions }" var="function" varStatus="status">
<tr>
<td><form:hidden path="functions[${status.index }].id"></td>
<td>${function.name}</td>
<td>
<form:checkbox path="functions[${status.index }].action" id="${function.id}" value="${function.action}"/>
</td>
</tr>
</c:forEach>
</form:form>
最后控制器将是这样的
@RequestMapping(value="/your/url", method=RequestMethod.POST)
public String postForm(@ModelAttribute("form") FormForm form)
{
//cool stuff here
}
请注意,正确的HTTP方法是POST,而不是GET。是的,我知道GET也适用,这绝对是一种不受欢迎的策略。此外,了解我如何在
Form
中引用函数
的列表。当我必须显示数据时,我在foreach
语句中使用了变量函数
,当我必须绑定
object以将数据传输到控制器时,我引用了列表。最后但同样重要的是,我还没有尝试过代码。我在飞行中写了它,只是想给你一些关于如何正确操作的提示。最后一件事。由于您将表单传递给了JSP,因此您不再需要使用所使用的属性填充模型。只需用数据填充表单,并使用它在视图中显示它们即可。就像这样
${form.stuff.you.want}
首先,您需要将name属性添加到复选框输入中。你可以在控制器上的一个数组中获得与你的名字属性相同的名字
@RequestMapping(value = "/functionlist", method = RequestMethod.GET)
public ModelAndView functionList(Model model,@RequestParam("checkboxname")String[] checkboxvalues) throws Exception {
ModelAndView mv = new ModelAndView("functionList");
mv.addObject("functionList", getFunctionsFromDB());
return mv;
}
尝试将表单
添加到jsp页面
<form:form id="yourForm" action="/functionlist/save" method="POST" modelAttribute="functionList">
<c:forEach items="${functionList}" varStatus="status" var="function">
<tr>
<td>${function.name}</td>
<td>
<form:checkbox path="functionList[${status.index}].action"/>
</td>
</tr>
</c:forEach>
<input type="submit" value="submit" />
</form:form>
在控制器中,您应该有这样的方法
@RequestMapping(value = { "/functionlist/save" }, method = RequestMethod.POST)
public String savePerson(@ModelAttribute("functionList")List<Function> functionList) {
// process your list
}
如果这不起作用,你可以尝试包装你的清单。
public class FunctionListWrapper {
private List<Function> functionList;
public FunctionListWrapper() {
this.functionList = new ArrayList<Function>();
}
public List<Function> getFunctionList() {
return functionList;
}
public void setFunctionList(List<Function> functionList) {
this.functionList = functionList;
}
public void add(Function function) {
this.functionList.add(function);
}
}
在控制器中而不是传递列表,传递包装器
FunctionListWrapper functionListWrapper=new FunctionListWrapper();
functionListWrapper.setFunctionList(userService.getFunctionList());
mv.addObject("functionListWrapper", functionListWrapper);
有关详细信息,请查看此问题:问题1和问题2
我想通过使用javascript或jquery或不使用javascript或jquery将thymeleaf下拉选择的值传递给spring boot控制器
我在jsp/jstl中有名字和密码,我试图将名字和密码传递给控制器。 这是我的控制器课程 包裹通讯。易于理解的控制器; 这是索引。带有表单标记和c标记库的jsp 我试图将变量user(值取自name variable)从此窗体传递给控制器。 有人能帮我怎么用c标签吗。。 我已经使用过commandName=“registereduser”,其中user是类registereduser的对象。 但我
两个问题。 我有User和Note类。用户可以有许多笔记。如何通过Thymeleaf显示属于用户的每个便笺的id?th:text=“${u.notes.id}”不起作用 我有一个表(见图),其中包含每个具有布尔isUserChecked值的用户的复选框,下面是删除选中用户的按钮。Thymeleaf更正显示isUserChecked值的状态。Delete按钮在手动选中checkbox时不起作用,但在
问题内容: 谁能告诉我如何在JSP中将JavaScript值传递给Scriptlet? 问题答案: 您的javascript值是客户端,您的scriptlet正在服务器端运行。因此,如果您想在scriptlet中使用javascript变量,则需要提交它们。 为此,可以将它们存储在输入字段中并提交表单,或者执行ajax请求。我建议您对此进行研究。
我试图将一个参数传递给我的@RESTController-Spring Boot类。 在@POSTMapping方法中,我想使用自定义Java类的方法来处理接收到的正文并返回响应。 Spring应用程序在应用程序中启动。Java语言控制器对象似乎是隐式创建的。 我已经尝试将构造函数添加到我的RESTController类中。但是我找不到用参数调用该构造函数的方法。 尽管我可以定义第二个构造函数,但
我想将countrySelection值传递给controller