【问题标题】:Spring MVC HelloWorldSpring MVC HelloWorld
【发布时间】:2014-04-17 10:51:27
【问题描述】:

我正在尝试使用 Spring web mvc 运行我的 helloWorld 程序,但我的 JSP 文件中有问题..它无法读取添加到 ModelMap 的“message”属性的值.. jsp 页面正常打开但是它显示 jsp EL,因为它是 ${message} .. 不是 message 的值!

handler-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context-4.0.xsd">

<context:component-scan base-package="com.shura" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>  
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>

</beans>

HelloWorld.java

package com.shura;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


@Controller
@RequestMapping("/hello")
public class HelloWorld {
@RequestMapping(method=RequestMethod.GET)
public String printHello(ModelMap model){
    model.addAttribute("message", "Hello World");
    return("hello");
}

}

hello.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
<h1>Spring MVC Hello World Example</h1>

<h2>${message}</h2>
</body>
</html>

web.xml

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
<display-name>Archetype Created Web Application</display-name>

<servlet>
<servlet-name>handler</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>handler</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

【问题讨论】:

  • 添加你的web.xml,确保它有一个正确的版本,如果它太低就不会启用EL。
  • 你能不能试试 model.addObject 而不是 model.addAttribute

标签: java spring jakarta-ee spring-mvc


【解决方案1】:

能否请您将 web.xml 中的版本更改为 2.4 而不是 2.3

<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

另外请检查您用于访问网页的 URL:

http://{ip address or localhost}:{port}/{web app context}/hello/

【讨论】:

  • 我更改了代码,但没有更改...jstl-1.2.jar 也可用
  • 您使用的是哪种浏览器?
  • 你会尝试 ctrl + F5 来刷新页面吗?
  • 您使用哪个应用服务器(使用哪个版本)进行部署?
  • 我正在使用eclipse的内置浏览器..我更改了html代码以查看是否有反射..但jsp EL没有变化
【解决方案2】:

你的jsp页面标签有问题

在没有 taglib 的 jsp 代码下使用即时解决方案

 <%@ page contentType="text/html; charset=UTF-8" %>
<html>
  <head>
      <title>Hello World</title>
</head>
<body>
 <h2>${message}</h2>
</body>
</html>

【讨论】:

    【解决方案3】:

    (/hello) 请求是否发送到控制器?我猜你是直接访问 jsp 页面,而不是通过控制器。另外,您可以更改请求映射 URL 或 JSP 名称并尝试吗?

    【讨论】:

      【解决方案4】:

      据我所知,当从 printHello 方法返回时,我们必须返回一个包含视图信息和模型信息的对象。

      虽然你正在形成模型,但我看到的是你没有返回它。

      您只返回一个被理解为视图名称的字符串。

      所以,你需要返回一个 ModelAndView 的对象。

      【讨论】:

      • 不,您不会...您放入ModelMap 的内容自动成为模型的一部分。
      • 正是@geoand 发布的内容。
      • 你能不能试试。这是我能想起来的。距离我从事 SpringMVC 工作已经三年了。无论如何,我会按照这篇文章来了解接受的答案。
      • 感谢您的反对。这让我意识到,并不是所有的事情我都应该回答。我应该回答我完全知道的。
      • 我照你说的做了,但没有改变!
      【解决方案5】:

      试试这个,

      public class HelloWorld {
      @RequestMapping(method=RequestMethod.GET)
      public String printHello(ModelMap model){
          model.addAttribute();
          return new ModelAndView("hello","message", "Hello World");
      }
      

      希望这会有所帮助!

      【讨论】:

      • 不会的。你基本上是在做同样的事情。
      • 那我猜EL可能有问题
      猜你喜欢
      • 2018-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多