【问题标题】:JSTL c:out not showing the variable's valueJSTL c:out 不显示变量的值
【发布时间】:2013-12-05 23:50:45
【问题描述】:

我正在学习about spring 的教程,我应该在控制器中设置一个变量,以便在呈现请求的 jsp 中打印。代码如下:

@Controller
public class HelloController {

    @RequestMapping(value="/hello.htm")
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse  response) throws ServletException, IOException {
        String now = (new Date()).toString();
        return new ModelAndView("WEB-INF/views/hello.jsp", "now", now);
    }
}

那么,hello.jsp代码如下:

<%@ page session="true"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
    <body>
        <p>Greetings, it is now <c:out value="${now}" /></p>
    </body>
</html>

我应该得到一个显示这个的 html:

Greetings, it is now Mon Fri Dec 06 00:39:35 CET 2013

但我得到的只是:

Greetings, it is now ${now}

我已经检查了所有内容两次(甚至更多!),但一切似乎都如教程所说,但一定有什么遗漏,我希望......

我的代码有什么问题?

【问题讨论】:

  • 我认为您编码的 hello 控制器错误。您需要将 now 放入带有 key is now 的 MAP。
  • 我也尝试了以下代码但没有成功:Map&lt;String, String&gt; params = new HashMap&lt;String, String&gt;(); params.put("now", now); ModelAndView mav = new ModelAndView("hello.jsp"); mav.addAllObjects(params); return mav;
  • 请发布您的完整 web.xml。

标签: spring jsp spring-mvc jstl taglib


【解决方案1】:

这是一个 E xpression L 语言问题。您的${} 没有得到解决。发生这种情况的原因有很多。一个也是最有可能的是,您的 web.xml 声明了 Servlet 2.3 及以下版本。您必须指定 2.4+。现在,显然,您的 Servlet 容器也必须支持该更高版本。

【讨论】:

  • 成功了!我已更改为 2.5,如教程中所示,现在它解析表达式。谢谢Sotirios,你一针见血!!我使用 maven 的原型创建了 webapp,默认情况下你会得到 2.3 版本的 servlet。
  • maven 3 仍然使用 servlet 2.3 生成 web.xml
【解决方案2】:

改变这个 - 一个图书馆的垫是坏的:

<!--  %@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>-->
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多