如何访问 jsp 页面中添加的没有属性名称的 ModelAndView 对象
How to access a ModelAndView object added without attribute name within the jsp page
我正在阅读 spring MVC 教程并遇到了 ModelAndView。
我的 JSP 视图如下所示,
<%@taglib uri = "http://www.springframework.org/tags/form" prefix = "form"%>
<html>
<head>
<title>Spring MVC </title>
</head>
<body>
<h2>Submitted Student Information</h2>
<table>
<tr>
<td>Name</td>
<td>${student.getName()}</td>
</tr>
<tr>
<td>Age</td>
<td>${student.getAge()}</td>
</tr>
<tr>
<td>ID</td>
<td>${student.getBranch()}</td>
</tr>
</table>
</body>
</html>
当我像下面这样在控制器中设置属性名称和属性值时,它起作用了,
ModelAndView mv = new ModelAndView();
mv.setViewName("result");
Student student = new Student("arun2", "CSE", 22);
mv.addObject("student",student);
return mv;
然后我遇到了其他重载方法ModelAndView.addObject(Object attributeValue)
,我尝试只设置属性值mv.addObject(student);
但是这次它没有在浏览器中显示学生详细信息。
我的问题:
- 是否可以像我第二次那样设置属性值来访问 JSP 中的这些值
mv.addObject(student);
。
- 如果是,如何?如果不是,为什么我们有这样的重载方法?如果我们无法在视图中访问它,为什么我们需要设置唯一值 (JSP)?
我浏览了 javadoc,但没有找到任何能让我理解的内容。
是的,你可以这样做并访问参数,但需要注意一些。
在ModelAndView检查addObject的API,它会显示方法如下:
然后,我们看一下ModelMap.addAttribute(Object)的定义
显示using a generated name,生成名称的定义如下所示:
所以,如果您只想使用 mv.addObject(student)
方法,您可以访问 jsp 页面中的数据,如下所示:
<%@taglib uri = "http://www.springframework.org/tags/form" prefix = "form"%>
<html>
<head>
<title>Spring MVC </title>
</head>
<body>
<h2>Submitted Student Information</h2>
<table>
<tr>
<td>Name</td>
<td>${student.name}</td>
</tr>
<tr>
<td>Age</td>
<td>${student.age}</td>
</tr>
<tr>
<td>ID</td>
<td>${student.branch}</td>
</tr>
</table>
</body>
</html>
如果对象是Group
class,那么你可以通过${group.name}
获取值
注意 ModelAndView 来自 org.springframework.web.servlet.ModelAndView
此外,我建议您使用 EL Expressions 直接访问 jsp 页面中的数据。
我正在阅读 spring MVC 教程并遇到了 ModelAndView。
我的 JSP 视图如下所示,
<%@taglib uri = "http://www.springframework.org/tags/form" prefix = "form"%>
<html>
<head>
<title>Spring MVC </title>
</head>
<body>
<h2>Submitted Student Information</h2>
<table>
<tr>
<td>Name</td>
<td>${student.getName()}</td>
</tr>
<tr>
<td>Age</td>
<td>${student.getAge()}</td>
</tr>
<tr>
<td>ID</td>
<td>${student.getBranch()}</td>
</tr>
</table>
</body>
</html>
当我像下面这样在控制器中设置属性名称和属性值时,它起作用了,
ModelAndView mv = new ModelAndView();
mv.setViewName("result");
Student student = new Student("arun2", "CSE", 22);
mv.addObject("student",student);
return mv;
然后我遇到了其他重载方法ModelAndView.addObject(Object attributeValue)
,我尝试只设置属性值mv.addObject(student);
但是这次它没有在浏览器中显示学生详细信息。
我的问题:
- 是否可以像我第二次那样设置属性值来访问 JSP 中的这些值
mv.addObject(student);
。 - 如果是,如何?如果不是,为什么我们有这样的重载方法?如果我们无法在视图中访问它,为什么我们需要设置唯一值 (JSP)?
我浏览了 javadoc,但没有找到任何能让我理解的内容。
是的,你可以这样做并访问参数,但需要注意一些。
在ModelAndView检查addObject的API,它会显示方法如下:
然后,我们看一下ModelMap.addAttribute(Object)的定义
显示using a generated name,生成名称的定义如下所示:
所以,如果您只想使用 mv.addObject(student)
方法,您可以访问 jsp 页面中的数据,如下所示:
<%@taglib uri = "http://www.springframework.org/tags/form" prefix = "form"%>
<html>
<head>
<title>Spring MVC </title>
</head>
<body>
<h2>Submitted Student Information</h2>
<table>
<tr>
<td>Name</td>
<td>${student.name}</td>
</tr>
<tr>
<td>Age</td>
<td>${student.age}</td>
</tr>
<tr>
<td>ID</td>
<td>${student.branch}</td>
</tr>
</table>
</body>
</html>
如果对象是Group
class,那么你可以通过${group.name}
注意 ModelAndView 来自 org.springframework.web.servlet.ModelAndView
此外,我建议您使用 EL Expressions 直接访问 jsp 页面中的数据。