【问题标题】:ModelAndView not returning model to the JSP in spring mvcModelAndView 没有在 spring mvc 中将模型返回到 JSP
【发布时间】:2018-12-20 02:57:56
【问题描述】:

我试图在通过控制器返回的 jsp 页面中显示对象,但我在 jsp 中看不到该对象。下面是我的控制器:

@RequestMapping(value = "/search/{groupName}", menthod = {RequestMethod.Get, RequestMethod.POST})
public ModelAndView groupAlphaHandler(@PathVariable("groupName") String groupName, HttpServletRequest request) {

    ArryList<GroupAlphaInfoVO> groupAlphaInfoVO = groupAlphaService.loadGroupAlphaSearchResult(groupName);
    //view name "group-alpha"     
    ModelAndView mav = new ModelAndView("group-alpha");
    mav.addObject("groupAlphaInfoVO", groupAlphaInfoVO);
    mav.addObject("pageTitle", "Group Alpha");
    //added debug point here and made sure groupAlphaInfoVO is not null (it has around 1000 records)
    return mav;
    }

这是我的 jsp 页面group-alpha.jsp

<html>
<head>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Group Alpha</title>
</head>
<body>
        ${pageTitle}<!-- this is getting displayed on jsp-->
	${groupAlphaInfoVO}
</body>
</html>

【问题讨论】:

  • 也许你需要在你的jsp中使用forEach
  • &lt;c:forEach items="${groupAlphaInfoVO}" var="dataList"&gt; ${dataList.groupName}&lt;/c:forEach&gt;....这不起作用
  • 检查你在jsp中的列表是否为空&lt;c:if test="${empty groupAlphaInfoVO}"&gt;the List is empty&lt;/c:if&gt;
  • &lt;c:if test="{groupAlphaInfoVO == null}" &lt;h2&gt; the list is empty&lt;/h2&gt;&lt;/c:if&gt; 当我这样做时,它显示列表为空,但我不知道为什么
  • 请不要为此恨我,问题出在控制器上,我正在传递 groupAlphaInfoVo,而在 jsp 中我使用的是 groupAlphaInfoVO

标签: java spring-mvc jsp jsp-tags


【解决方案1】:

你需要这个isELIgnored="false"

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" isELIgnored="false"%>  //here

【讨论】:

  • 如果是这样,那么${pageTitle} 也不应该起作用,无论如何我添加了这个isELIgnored="false" 但它仍然不起作用
  • 为什么你的 head 标签包含 。那应该在jsp的顶部。
  • 我更新到jsp的顶部,还是没有得到结果
  • 你需要阅读这个页面:codejava.net/java-ee/jsp/…
  • 是的,我明白这一点,但是当我使用${pageTitle} 时它正在工作,所以我认为还有其他一些我无法解决的问题
【解决方案2】:

看来你在控制器中犯了一个愚蠢的错误

@RequestMapping(value = "/search/{groupName}", menthod = {RequestMethod.Get, RequestMethod.POST})

有一个拼写错误。不是**menthod****method** 而且我认为没有必要使用RequestMethod.POST

另一个错误是mav.addObject("groupAlphaInfoVO", groupAlphaInfoVO); 使用此代码放置对象列表。而在JSP页面中你没有对列表做任何操作。要打印该列表,您应该编写&lt;c:forEach&gt;....&lt;/c:forEach&gt; 代码。例如

<c:forEach var="results" items="${groupAlphaInfoVO}">
       <c:out value="${results.userid}"></c:out>
       <c:out value="${results.password}"></c:out>
       <c:out value="${results.role}"></c:out>
       <c:out value="${results.contact}"></c:out>
       <c:out value="${results.mentor}"></c:out>
       <c:out value="${results.group}"></c:out>
</c:forEach>

为了使用你需要在你的 pom.xml 中添加 JSTL 依赖

<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

并在您的 jsp 页面顶部添加 &lt;%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %&gt;

【讨论】:

  • 正如你所说,method=RequestMethod.GET 就足够了。还有拼写错误。 jsp页面显示什么?
  • @varman 请检查我编辑的答案。如果我错过了什么,请告诉我!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-24
  • 1970-01-01
  • 2020-10-01
  • 2021-08-20
  • 2011-06-30
相关资源
最近更新 更多