0

谁能告诉我如何将值从 JSP 文件传递​​到速度模板。

4

1 回答 1

0

也许你应该尝试让一些简单的工作。考虑一个简单的动态 Web 项目,其 jsp 如下所示:

<%@page import="java.io.File"%>
<%@page import="org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"%>
<%@page import="org.apache.velocity.runtime.RuntimeConstants"%>
<%@page import="java.io.StringWriter"%>
<%@page import="org.apache.velocity.VelocityContext"%>
<%@page import="org.apache.velocity.Template"%>
<%@page import="org.apache.velocity.app.VelocityEngine"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<%
     String s = request.getParameter("test");
    VelocityEngine velocityEngine = new VelocityEngine();
    velocityEngine.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, "/");

    velocityEngine.init();
    Template t = velocityEngine.getTemplate("/template.vm");
    VelocityContext context = new VelocityContext();
    context.put("example",
            s);
    StringWriter w = new StringWriter();
    t.merge(context, w); 


%>
<p><%out.println(w.getBuffer().toString());  %> </p>
 </body>
</html>

它只是从您的服务器的根目录加载一个模板,并使用 GET/POST 参数在当前站点中将其打印出来。

在项目的 WEB-INF/lib 文件夹中,放置velocity.jar、common-collections.jar 和common-lang.jar。重要提示:在您的服务器根目录中,您可以使用以下模板放置一个简单的文本文件 template.vm

 <b>Test $example<b> 

你也可以有一个模板目录或类似的东西,但我会告诉你什么时候你想用 webapp 部署你的模板(例如从 WEB-INF 目录加载 vm-files)-> 这是一个挑战!

用 yourproject/example.jsp?test=getparamh 加载它,我确信它可以工作

但是,如果你尝试这个 - 承认 - 简单的例子,它应该可以工作,你也许可以从中得出你的目标。

于 2013-04-12T08:11:57.923 回答