有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何访问jsp页面中添加的没有属性名的ModelAndView对象

我在看春季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. 是否可以像我第二次mv.addObject(student);那样通过设置属性值在JSP中访问这些值
  2. 如果是,怎么做?如果不是,为什么我们有这样的重载方法?如果无法在视图(JSP)中访问,为什么只需要设置值

我浏览了javadocs,但没有找到任何能让我理解的东西


共 (1) 个答案

  1. # 1 楼答案

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

    ModelAndView检查addObject的API,它将显示如下方法: 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}获取值

    请注意,模型和视图是来自组织的。springframework。网状物servlet。ModelAndView

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