首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将对象从Spring3.0控制器传递到JSP视图并使用JSTL进行测试

如何将对象从Spring3.0控制器传递到JSP视图并使用JSTL进行测试
EN

Stack Overflow用户
提问于 2010-02-13 05:51:15
回答 3查看 30.7K关注 0票数 6

首先,我有一个Spring3.0控制器,其方法类似于下面的方法。

我向视图传递了一个名为" message“的对象,如果消息是由"doStuff”方法设置的,则希望通过视图打印该消息。

代码语言:javascript
运行
复制
@RequestMapping("/index")
public ModelAndView doStuff() {
    ModelAndView mav = new ModelAndView();
    Map<String, String> message = new HashMap<String, String>();
    message.put("message", "Hello World");
    mav.setViewName("pages/myView");
    mav.addObject("message", message);
    return mav;
}

该视图类似于下面的视图:

代码语言:javascript
运行
复制
<%@ page session="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
<html>
<head>
<title>Test</title>
</head>
<body>
<c:if test="${message.message} != null">
    <div class="msg">test1: ${message.message}</div>
</c:if>
<c:if test="${message.message} != ''">
    <div class="msg">test2: ${message.message}</div>
</c:if>
<c:if test="${message.message}">
    <div class="msg">test3: ${message.message}</div>
</c:if>
<c:if test="not empty ${message.message}">
    <div class="msg">test4: ${message.message}</div>
</c:if>
<div class="msg">test5: ${message.message}</div>
</body>
</html>

到目前为止,只有"test5“打印消息,但我只想在"${message.message}”不为null时打印消息。

我尝试过"http://java.sun.com/jstl/core_rt“和"http://java.sun.com/jstl/core",但似乎无法让"”语句正常工作。

有没有人知道我做错了什么,或者有更好的方法?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-13 06:22:14

您的前两个<c:if>标记应该如下所示:

代码语言:javascript
运行
复制
<c:if test="${message.message != null}">
    <div class="msg">test1: ${message.message}</div>
</c:if>
<c:if test="${message.message != ''}">
    <div class="msg">test2: ${message.message}</div>
</c:if>

注意test属性中!=和}的位置--条件需要在大括号内。

还有#3中的测试:

代码语言:javascript
运行
复制
<c:if test="${message.message}">
    <div class="msg">test3: ${message.message}</div>
</c:if>

只有当message.message的值实际上是值" true“时,才会计算为true。因为它不是(它是"Hello World"),所以测试失败。

测试#4的格式也不正确(“非空”也需要在大括号内)……

票数 2
EN

Stack Overflow用户

发布于 2010-02-13 06:10:50

taglib URI错误。它是旧的JSTL 1.0 URI。你从哪里弄来的?扔掉那本10年前的教程/书;)在删除任何旧的JSTL库(jstl.jar standard.jar)和最终提取的内容(一些糟糕的教程建议您需要提取.tld文件并将其放入类路径中,这是错误的)之后,获取JSTL 1.2 here并将其放入/WEB-INF/lib中。

在最近的JSTL TLD documentation中指定了正确的URI。如果单击任何单独的JSTL库,您将在文档顶部看到正确的URI示例,例如JSTL core

标准语法:

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

XML语法:

也就是说,您的测试实际上是错误的。您应该使用${message.message != null}${message.message != ''}${not empty message.message}。您可以了解有关Java EE tutorial part II chapter 5中的EL和Java EE tutorial part II chapter 7中的JSTL的更多信息。祝好运。

票数 4
EN

Stack Overflow用户

发布于 2010-02-13 06:09:58

您要查找的URI是http://java.sun.com/jsp/jstl/core

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2255352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档