【问题标题】:${} variables not showing - Spring MVC${} 变量未显示 - Spring MVC
【发布时间】:2014-11-19 10:41:32
【问题描述】:

我有一个包含 Spring MVC、Spring Security 和 Spring Social 的 Maven 项目。

当我在 jsp 中放一条消息时,这会显示 ${message} 消息的实例。

我有 jstl 库。

我的 JSP:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>

    <script>
        var m = '${message}';
        alert(m);
    </script>

    ${pageContext.request.contextPath}
    <c:out value="${message}"></c:out>
    <br /><br />
    ${message}
    <br /><br />
    ${currentUserConnection.profileUrl}
    <br /><br />

</body>
</html>

我的控制器:

@Controller
public class LoginController {

    @RequestMapping(value = "/signup**")
    public ModelAndView signupHandler() {

        ModelAndView model = new ModelAndView("home");
        model.setViewName("home");

        model.addObject("message", "aa");

        return model;
    }

}

网页显示${message}aa 的实例。也提醒节目${message}

我做错了什么? 提前致谢。

编辑 1:

配置在注释中。 我的视图解析器:

@Bean(name = "viewResolver")
public InternalResourceViewResolver viewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setViewClass(JstlView.class);
    viewResolver.setPrefix(viewPrefix);
    viewResolver.setSuffix(viewSuffix);
    return viewResolver;
}

解决方案:

解决办法是我的web xml的版本需要大于2.5

感谢@M.Deinum

【问题讨论】:

  • 确保您拥有正确的 web.xml。检查版本,至少应该是 2.5...
  • @M.Deinum 我正在检查,我的版本是 2.3,我正在更改它。我再次发表评论
  • 是的,就是这个原因
  • 非常感谢@M.Deinum 我更改了 web.xml 的版本并且一切正常。

标签: java jsp spring-mvc


【解决方案1】:

确保你的 spring 上下文 xml 中有正确的 jsp 解析器。

喜欢:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"/>
    <property name="suffix" value=".jsp"/>
</bean>

在您的 web.xml 中正确配置 Dispatcher Servlet:

  <servlet>
    <servlet-name>dispatcher</servlet-name>
        <servlet-class>
               org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
  </servlet-mapping>

对于旧的 Servlet 2.3,您可以将休闲添加到 jsp(请参阅here)或将您的 web.xml 更改为新的:

<%@ page isELIgnored ="false" %> 

已编辑。

【讨论】:

  • 我在注释中有配置,我用这些方法更新了我的答案。此外,Spring 始终返回正确的视图,但不显示添加到模型中的对象。
  • 解决方案是@M.Deinum 的评论,我的 web.xml 版本为 2.3,我需要 2.5 或更高版本。无论如何感谢您的帮助。
【解决方案2】:

在大多数情况下,不工作的 EL 与 web.xml 中的错误版本有关。

<?xml version="1.0" encoding="ISO-8859-1"?>
<!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>

要使 EL 工作,版本必须高于 2.3。最好是您的容器可用的最高值。

<?xml version="1.0" encoding="UTF-8"?>

<web-app
    version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

</web-app>

要查看模板列表,请查看this website

【讨论】:

    【解决方案3】:

    我也遇到了同样类型的问题,我将列表放在 ModelAndView 对象中,并尝试使用 foreach 循环在 jsp 页面上显示该列表。

    由于我使用 Servlet 2.3 的 Web 应用程序版本而出现问题

    我已经用尽了我的 2 个小时,但搜索并发现添加

    <%@ page isELIgnored="false" %>
    

    我真的建议您更新您的 servlet 版本。我们现在正在推出 3.1,但在 2.3 上没有意义

    解决了我的问题,请试试这个。

    【讨论】:

      猜你喜欢
      • 2013-05-11
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-07
      • 2016-04-03
      • 1970-01-01
      相关资源
      最近更新 更多