首先,我有一个Spring3.0控制器,其方法类似于下面的方法。
我向视图传递了一个名为" message“的对象,如果消息是由"doStuff”方法设置的,则希望通过视图打印该消息。
@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;
}该视图类似于下面的视图:
<%@ 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",但似乎无法让"”语句正常工作。
有没有人知道我做错了什么,或者有更好的方法?
谢谢
发布于 2010-02-13 06:22:14
您的前两个<c:if>标记应该如下所示:
<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中的测试:
<c:if test="${message.message}">
<div class="msg">test3: ${message.message}</div>
</c:if>只有当message.message的值实际上是值" true“时,才会计算为true。因为它不是(它是"Hello World"),所以测试失败。
测试#4的格式也不正确(“非空”也需要在大括号内)……
发布于 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的更多信息。祝好运。
发布于 2010-02-13 06:09:58
您要查找的URI是http://java.sun.com/jsp/jstl/core
https://stackoverflow.com/questions/2255352
复制相似问题