【问题标题】:Can't display data in View无法在视图中显示数据
【发布时间】:2015-02-13 18:36:19
【问题描述】:

我是 Java Spring MVC 的新手。按照网上的一些教程,我不知道为什么,但是当我将一些文本从controller 传递给view 时,文本似乎没有出现。

Controller

@Controller
public class HelloWorldController {

    @RequestMapping(value = "/helloWorld.htm", method = RequestMethod.GET)
    public ModelAndView helloWorld(){
        String message = "Hello Spring MVC!";
        return new ModelAndView("helloWorld", "message", message);
    }
}

View

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        Message is: ${message}
    </body>
</html>

我关注的所有教程都有这个确切的代码,但它不起作用。我在这里想念什么?

【问题讨论】:

  • 我已经有一段时间没有做 JSP 了,但我很确定这不是您在 JSP 中声明字符串的方式。 Message is: ${message} 被解释为文字文本,不是吗?
  • 根本不解释,看不到文字。

标签: java spring spring-mvc jakarta-ee


【解决方案1】:

如果您只需要显示消息,请尝试将HttpServletRequest 添加到helloWorld 接收的参数中:

public ModelAndView helloWorld(HttpServletRequest request){

然后使用setAttribute显示消息:

request.setAttribute("message", "Hello Spring MVC!");

编辑:结果证明不需要这条法令

我确实忘记了在 jsp 中你需要类似的东西:

<p><c:out value="${message}" /></p>

页面顶部有这个:

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>

【讨论】:

  • 谢谢。这解决了问题。我上面的代码有什么问题?为什么它不起作用,并且在每个教程中都这样显示?
  • 我的错,我回头看了一眼我的jsp,发现我错过了一些信息,以为代码不起作用。无论如何,我不是 Spring 方面的专家,但是当我发现自己遇到这个问题时,这通常意味着我错过了在将使用 .jsp 中的数据的表单中设置 path 属性。跨度>
  • 感谢您的帮助。我会试着用你给我的代码做实验,我想我会更好地理解它。
  • 以上答案没有利用弹簧的模型属性概念。您正在使用老式的方法来设置请求范围并在 JSP 中使用它。您是否在 mvc servlet-xml 中声明了类似于下面的 bean?
  • 是的,我在servlet 中有那个bean
【解决方案2】:

此代码运行良好。可以肯定的是,您正在为 helloWorld.htm 创建一个 JSP 文件,对吗?

我只是将您的代码放入 helloWorld.jsp 中,它工作正常。

package com.dhargis.example;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;


@Controller
public class HelloWorldController {


	    @RequestMapping(value = "/helloWorld.htm", method = RequestMethod.GET)
	    public ModelAndView helloWorld(){
	        String message = "Hello Spring MVC!";
	        return new ModelAndView("helloWorld", "message", message);
	    }
	
	
	
}

-------------------------------------JSP----------------------------------------------------


helloWorld.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
	<title>Home</title>
</head>
<body>


<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        Message is: ${message}
    </body>
</html>

</body>
</html>

然后我删除了 ,它仍然可以正常工作。

给我一​​个后续问题,或者我可以为你放在 Github 上。

【讨论】:

  • 是的,helloWorldJSP 文件。我不明白为什么它对我不起作用。
  • 如果可以的话,把整个项目放到Github,这样我就可以检查它是否可以工作了。
  • 我在Github 上查看了该项目,但这正是我所做的。而且,仍然行不通。这几天查不出什么问题,看了一堆教程还是不行。
  • 也许您缺少一个步骤。让我们创建一个模板项目,然后添加您的控制器: 1) 因此,如果您使用 STS 版本:3.6.3.SR1 和 Pivital Tc 作为您的服务器。 2) 新建 -> Spring 项目 -> Spring MVC 项目 3) 给 Maven 一点时间来解决您的依赖关系。 4) 右键单击​​ Pivital tc 服务器并单击添加/删除并添加项目。 5)右键单击项目->属性->Web项目设置->上下文根。示例:MVC 6) 右键单击​​ Pivital tc Server 并单击 clean 7) 右键单击​​ Pivital tc Server 并启动 8) 检查以查看 localhost:8080/MVC
猜你喜欢
  • 2013-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 2015-06-03
相关资源
最近更新 更多