将值从JSP传递给速度模板

时间:2013-04-12 05:39:55

标签: java jsp velocity xwiki

任何人都可以告诉我如何将值从JSP文件传递到速度模板。

1 个答案:

答案 0 :(得分: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>

<%@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文件) - &gt;这是一个挑战!

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

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