我一直在做几个Spring教程,并且在视图使用JSTL打印出变量的阶段都失败了。
观点:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/jsp/include.jsp" %>
<!DOCTYPE html>
<html>
<head><title><fmt:message key="title"/></title></head>
<body>
<h1><fmt:message key="heading"/></h1>
<p><fmt:message key="greeting"/><c:out value="${model.now}"/></p>
<h3>Products</h3>
<c:forEach items="${model.products}" var="prod">
<c:out value="${prod.name}"/> <i>$<c:out value="${prod.number}"/></i><br><br>
</c:forEach>
</body>
</html>
fmt:message部分正确地显示在我的页面上,但$ {model.now}部分未被渲染。
以上是在&#34; hello.jsp&#34;页面上,其中包括&#34; include.jsp&#34;其中包含:
taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"
taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"
JSTL在我的库文件夹中(我使用NetBeans)
任何人都知道为什么会这种情况一直发生并且绝对没有任何东西呈现出来?
这是控制器:
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
String now = (new java.util.Date()).toString();
logger.info("Returning hello view with " + now);
Map<String, Object> myModel = new HashMap<String, Object>();
myModel.put("now", now);
myModel.put("product", this.productManager.getProducts());
return new ModelAndView("hello", "model", myModel);
}
的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
si:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener- class>
</listener>
<servlet>
<servlet-name>springapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
答案 0 :(得分:1)
成功发现了为什么这不起作用:
我在我的servlet中错误地映射到我的hello视图,它正在加载页面但是没有正确加载模型,因此没有显示变量的原因
答案 1 :(得分:0)
只需将表单标记指定为:
<html>
<head>
<%@ include file="/WEB-INF/jsp/include.jsp" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
</head>
<body">
<form:form id="model" modelAttribute="model">
<h1><fmt:message key="heading"/></h1>
<p><fmt:message key="greeting"/><c:out value="${model.now}"/></p>
</form:form>
</body>
</html>
答案 2 :(得分:0)
添加以下taglib:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
还有<%@ page isELIgnored="false"%>
最后确保您的类路径上有JSTL 1.2 taglib依赖项