无法将数据绑定到jsp中的模型属性列表



我正在学习springmvc和jsp。我的jsp文件中有一个表单。我想要的是使用模型属性将解析布尔列表的值更改为jsp文件。让我澄清更多,我正在解析我的控制器中的一个列表到jsp文件。列表包含布尔值。首先,我需要为列表中的每个项目创建一行复选框。如果布尔值为true,则需要选中复选框。我已经完成了这一部分。但问题是,当我点击某些复选框时。的相应值需要更改。但是在点击提交按钮后,空列表被解析为控制器。我对此一无所知。我也附上了代码。

控制器

@Controller
@EnableAsync
public class MyController {
@Autowired
private MyService myService;
@RequestMapping(value = "/myMenu", method = RequestMethod.GET)
public String generateForm(ModelMap model) {
ObjectDTO menu = new ObjectDTO();
BaseDataDTO baseDataDTO = new BaseDataDTO();
baseDataDTO = 
myService.getRestrictedMenuBaseData();
List<LitsDTO> listDTOs = myService.getList();
model.addAttribute("list", listDTOs);
model.addAttribute("menu", menu);
return "myMenu";
}
@RequestMapping(value = "/myMenu", method = RequestMethod.POST)
public String  populateForm(ModelMap model,
@Valid @ModelAttribute("menu") RestrictedObjectDTO menu,
BindingResult bindingResult) {
//here i want to print list valus
}
}

JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>My Form</title>
<meta name="viewport"
content="width=device-width, initial-scale=1, minimum-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script>
function setList(){
<c:forEach items="${list}" var="listItem">
if(document.getElementById(listItem.id).checked){
<c:set target="${listItem}"
property = "isdisable"
value = "true"  />
}else{
<c:set target="${listItem}"
property = "isdisable"
value = "false"  />
}
row = row + 1;
</c:forEach>        
}
</script>
</head>
<body>
<form:form action="myMenu.do" method='POST' modelAttribute="menu">
<table> 
<c:forEach items="${list}" var="listItem">
<tr>
<td><span class="label_names req">${listItem.name}</span>
<c:if test="${listItem.disable}">
<input type="checkbox" id="${listItem.id}" checked>
</c:if> 
<c:if test="${!listItem.disable}">
<input type="checkbox" id="${listItem.id}">
</c:if>
</td>
</tr>
</c:forEach>
<tr>
<td align="left"><input class="input_buttons" name="action"
style="float: left; margin-left: 281px;" type="submit" value="save" onClick="setList()"/>
</td>
</tr>
</table>
</form:form>    
</body>                     

任何帮助都是很好的

非常感谢。。。

提交表单时,控制器上出现空列表的原因是您没有在jsp页面中使用spring表单控件,因此spring将无法将jsp表单值与您传递给控制器的模型属性进行映射。

要知道如何将spring模型属性映射到jsp页面元素,您需要查看spring表单属性。

看看下面链接中给出的例子,https://www.baeldung.com/spring-mvc-form-tutorial

最新更新