@ModelAttribute Spring MVC multiple select 未设置 ArrayList
@ModelAttribute Spring MVC multiple select not setting the ArrayList
我正在尝试 Spring 基础教程中的 MVC。我遇到了一个问题,我试图将数据从 HTML 表单绑定到模型对象。很少有像
这样的字段
private String studentName;
private String studentHobby;
private Long studentMobile;
private Date studentDOB;
private ArrayList<String> studentSkills;
所有字段都设置正确,我可以在另一个 jsp 上正确显示它们,除了技能字段是 ArrayList。
Name: ${student.studentName}<br>
Hobby: ${student.studentHobby}<br>
Mobile: ${student.studentMobile}<br>
DOB: ${student.studentDOB}<br>
Skills: ${student.studentSkills}<br>
我的代码如下:
package com.springMVC.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.springMVC.model.Student;
@Controller
public class StudentAdmissionController
{
@ModelAttribute
public void addCommonObjects(Model model)
{
model.addAttribute("headerMsg","welcome to spring learning!");
}
@RequestMapping(value="/admissionForm",method=RequestMethod.GET)
public ModelAndView getAdmissionForm()
{
System.out.println("inside getAdmission");
ModelAndView model = new ModelAndView("AdmissionForm");
return model;
}
@RequestMapping(value="submitAdmissionForm",method=RequestMethod.POST)
public ModelAndView submitAdmissionForm(@ModelAttribute("student") Student student,BindingResult result)
{
System.out.println("inside submitAdmissionForm name: "+student.getStudentName()+" hobby: "+student.getStudentHobby());
ModelAndView model = new ModelAndView("AdmissionSuccess");
return model;
}
}
AdmissionForm.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page isELIgnored="false" %>
<!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>Insert title here</title>
</head>
<body>
<b>${headerMsg }</b>
<form action="/SpringMVCDemo/submitAdmissionForm" method="post">
studentName: <input type="text" name="studentName"><br>
studentHobby: <input type="text" name="studentHobby"><br>
studentMobile: <input type="text" name="studentMobile"><br>
studentDOB: <input type="text" name="studentDOB"><br>
StudenSkills: <select name="studentSkills" multiple>
<option value="java">java</option>
<option value="Java">java2</option>
<option value="JAVA">java3</option>
</select>
<input type="submit">
</form>
</body>
</html>
AdmissionSuccess.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page isELIgnored="false" %>
<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!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>Insert title here</title>
</head>
<body>
<h1>${headerMsg }</h1>
<h1>Congratulations!</h1>
<h2>Name: ${student.studentName}</h2><br>
<h2>Hobby: ${student.studentHobby}</h2><br>
<h2>Mobile: ${student.studentMobile}</h2><br>
<h2>${student.studentDOB}</h2><br>
<h2>Skills: ${student.studentSkills}</h2><br>
</body>
</html>
首先这个链接带来的形式 http://localhost:8080/SpringMVCDemo/admissionForm.html
并且在提交相同的捕获数据后显示在另一个 jsp。
studentSkills
属性 必须是 List<String>
类型,而不是 ArrayList<String>
。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
<!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>Insert title here</title>
</head>
<body>
<h1>${headerMsg }</h1>
<h1>Congratulations!</h1>
<h2>Name: ${student.studentName}</h2><br>
<h2>Hobby: ${student.studentHobby}</h2><br>
<h2>Mobile: ${student.studentMobile}</h2><br>
<h2>Date of Birth: ${student.studentDOB}</h2><br>
<h2>Skills: ${student.studentSkills}</h2><br>
</body>
</html>
我正在尝试 Spring 基础教程中的 MVC。我遇到了一个问题,我试图将数据从 HTML 表单绑定到模型对象。很少有像
这样的字段private String studentName;
private String studentHobby;
private Long studentMobile;
private Date studentDOB;
private ArrayList<String> studentSkills;
所有字段都设置正确,我可以在另一个 jsp 上正确显示它们,除了技能字段是 ArrayList。
Name: ${student.studentName}<br>
Hobby: ${student.studentHobby}<br>
Mobile: ${student.studentMobile}<br>
DOB: ${student.studentDOB}<br>
Skills: ${student.studentSkills}<br>
我的代码如下:
package com.springMVC.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.springMVC.model.Student;
@Controller
public class StudentAdmissionController
{
@ModelAttribute
public void addCommonObjects(Model model)
{
model.addAttribute("headerMsg","welcome to spring learning!");
}
@RequestMapping(value="/admissionForm",method=RequestMethod.GET)
public ModelAndView getAdmissionForm()
{
System.out.println("inside getAdmission");
ModelAndView model = new ModelAndView("AdmissionForm");
return model;
}
@RequestMapping(value="submitAdmissionForm",method=RequestMethod.POST)
public ModelAndView submitAdmissionForm(@ModelAttribute("student") Student student,BindingResult result)
{
System.out.println("inside submitAdmissionForm name: "+student.getStudentName()+" hobby: "+student.getStudentHobby());
ModelAndView model = new ModelAndView("AdmissionSuccess");
return model;
}
}
AdmissionForm.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page isELIgnored="false" %>
<!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>Insert title here</title>
</head>
<body>
<b>${headerMsg }</b>
<form action="/SpringMVCDemo/submitAdmissionForm" method="post">
studentName: <input type="text" name="studentName"><br>
studentHobby: <input type="text" name="studentHobby"><br>
studentMobile: <input type="text" name="studentMobile"><br>
studentDOB: <input type="text" name="studentDOB"><br>
StudenSkills: <select name="studentSkills" multiple>
<option value="java">java</option>
<option value="Java">java2</option>
<option value="JAVA">java3</option>
</select>
<input type="submit">
</form>
</body>
</html>
AdmissionSuccess.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page isELIgnored="false" %>
<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!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>Insert title here</title>
</head>
<body>
<h1>${headerMsg }</h1>
<h1>Congratulations!</h1>
<h2>Name: ${student.studentName}</h2><br>
<h2>Hobby: ${student.studentHobby}</h2><br>
<h2>Mobile: ${student.studentMobile}</h2><br>
<h2>${student.studentDOB}</h2><br>
<h2>Skills: ${student.studentSkills}</h2><br>
</body>
</html>
首先这个链接带来的形式 http://localhost:8080/SpringMVCDemo/admissionForm.html
并且在提交相同的捕获数据后显示在另一个 jsp。
studentSkills
属性 必须是 List<String>
类型,而不是 ArrayList<String>
。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
<!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>Insert title here</title>
</head>
<body>
<h1>${headerMsg }</h1>
<h1>Congratulations!</h1>
<h2>Name: ${student.studentName}</h2><br>
<h2>Hobby: ${student.studentHobby}</h2><br>
<h2>Mobile: ${student.studentMobile}</h2><br>
<h2>Date of Birth: ${student.studentDOB}</h2><br>
<h2>Skills: ${student.studentSkills}</h2><br>
</body>
</html>