如何在jsp页面中访问没有属性名称的ModelAndView对象

时间:2018-03-28 10:05:39

标签: java jsp spring-mvc modelandview

我正在阅读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);但这次它没有在浏览器中显示学生详细信息。

我的问题:

  1. 是否可以通过设置属性值来访问JSP中的这些值,就像我第二次mv.addObject(student);那样。
  2. 如果是,怎么样?如果没有,为什么我们有这样的重载方法?如果我们无法在视图(JSP)中访问它,为什么我们只需要设置值?
  3. 我经历了javadocs,但没有找到任何可以让我理解的东西。

1 个答案:

答案 0 :(得分:0)

是的,您可以这样做并访问参数,但需要注意。

ModelAndView 检查API的addObject,它将显示如下方法: enter image description here

然后,我们来看看 ModelMap.addAttribute(Object) 的定义 enter image description here

使用generated name 显示 生成的名称的定义如下所示: enter image description here

因此,如果您只想使用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类,那么您可以通过${group.name}

获取价值

请注意 ModelAndView 来自 org.springframework.web.servlet.ModelAndView

此外,我建议您使用 EL Expressions 直接访问jsp页面中的数据。