标签: velocity

我为什么要使用模板引擎?jsp include和jstl vs tiles,freemarker,velocity,sitemesh

我即将选择组织我的观点(使用spring-mvc,但这不应该太重要)

据我所知,有6个选项(尽管它们并不相互排斥):

  • 瓷砖
  • SiteMesh的
  • Freemarker的
  • 速度
  • <jsp:include>
  • <%@ include file="..">

TilesSitemesh可以分组; 所以可以的Freemarker速度.每个小组中使用哪一个不是这个讨论的问题,有足够的问题和讨论.

这是一个有趣的读物,但不能说服我使用瓷砖.

我的问题是 - 这些框架提供的内容 <@ include file="..">与JSTL 无法正常完成.要点(一些来自文章):

  1. 包括部分页面,如页眉和页脚 - 之间没有区别:

    <%@ include file="header.jsp" %>
    
    Run Code Online (Sandbox Code Playgroud)

    <tiles:insert page="header.jsp" />
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在标题中定义参数 - 如标题,元标记等.这非常重要,尤其是从SEO的角度来看.使用模板选项,您只需定义每个页面应定义的占位符.但是你可以在jsp中使用JSTL,使用<c:set>(在包含页面中)和<c:out>(在包含的页面中)

  3. 布局重组 - 如果要在菜单上方移动面包屑,或在另一个侧面板上方移动登录框.如果页面包含(使用jsp)组织不当,则可能需要在这种情况下更改每个页面.但是如果你的布局不是太复杂,并且你把常见的东西放在页眉/页脚中,就没有什么可担心的了.

  4. 公共组件和特定内容之间的耦合 - 我没有发现这个问题.如果要重用某些片段,请将其移动到不包含任何页眉/页脚的页面,并在需要的地方包含它.

  5. 效率 - <%@ include file="file.jsp" %>比其他任何东西都更有效,因为它被编译一次.所有其他选项都被解析/执行多次.

  6. 复杂性 - 所有非jsp解决方案都需要额外的xml文件,其他包括,预处理器配置等.这既是学习曲线又是引入更多潜在的失败点.此外,它使支持和更改变得更加乏味 - 您必须检查许多文件/配置以了解正在发生的事情.

  7. 占位符 - 速度/自由标记比JSTL更多吗?在JSTL中,您放置占位符,并使用模型(放置在请求或会话范围内,由控制器)来填充这些占位符.

所以,说服我除了普通的JSP之外我应该使用上面的任何框架而不是/.

java jsp velocity freemarker tiles

95
推荐指数
4
解决办法
3万
查看次数

java中的字符串替换,类似于速度模板

StringJava中是否有任何替换机制,我可以使用文本传递对象,并在发生时替换字符串.
例如,文本是:

Hello ${user.name},
    Welcome to ${site.name}. 
Run Code Online (Sandbox Code Playgroud)

我拥有的对象是"user""site".我想${}用对象中的等价值替换内部给出的字符串.这与我们替换速度模板中的对象相同.

java string reflection velocity

83
推荐指数
8
解决办法
8万
查看次数

速度与FreeMarker

Velocity还是FreeMarker?

他们看起来几乎一样,甚至是语法?

用什么?还是什么时候用?

java velocity template-engine freemarker

68
推荐指数
4
解决办法
5万
查看次数

无法找到速度模板资源

只是一个基于maven结构的简单速度独立应用程序.这是用Scala编写的代码片段,用于helloworld.vm${basedir}/src/main/resources文件夹中呈现模板:

com.ggd543.velocitydemo

import org.apache.velocity.app.VelocityEngine
import org.apache.velocity.VelocityContext
import java.io.StringWriter

/**
 * @author ${user.name}
 */
object App {

  def main(args: Array[String]) {
    //First , get and initialize an engine
    val ve = new VelocityEngine();
    ve.init();

    //Second, get the template
    val resUrl = getClass.getResource("/helloworld.vm")
    val t = ve.getTemplate("helloworld.vm");   // not work 
//    val t = ve.getTemplate("/helloworld.vm");  // not work
//    val t = ve.getTemplate(resUrl.toString);  // not work yet
    //Third, create a context and add data
    val context = new …
Run Code Online (Sandbox Code Playgroud)

java velocity scala

52
推荐指数
5
解决办法
9万
查看次数

如何在速度中逃避#

我想知道如何在速度中逃避#.反斜杠似乎逃脱了它,但它也打印出来

这个:

\#\#
Run Code Online (Sandbox Code Playgroud)

打印:

\#\#
Run Code Online (Sandbox Code Playgroud)

我想要:

## 
Run Code Online (Sandbox Code Playgroud)

velocity

51
推荐指数
3
解决办法
2万
查看次数

如何使用String作为速度模板?

从String创建Velocity模板的最佳方法是什么?

我知道Velocity.evaluate方法,我可以传递String或StringReader,但我很好,有更好的方法(例如创建模板实例的任何优点).

java velocity

51
推荐指数
3
解决办法
4万
查看次数

我如何隐藏空的Velocity变量名?

我在Java应用程序中使用Struts + Velocity,但在提交表单后,确认页面(Velocity模板)显示变量名称而不是空标签,如下面的示例中的Age:

姓名:费尔南多

年龄:{person.age}

性别:男

我想知道如何隐藏它!

java templates struts velocity

46
推荐指数
2
解决办法
2万
查看次数

在jar文件中加载速度模板

我有一个项目,我想加载一个速度模板来完成它与参数.整个应用程序打包为jar文件.我最初想到的是这样的:

VelocityEngine ve = new VelocityEngine();

   URL url = this.getClass().getResource("/templates/");

   File file = new File(url.getFile());

   ve = new VelocityEngine();
   ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "file");
   ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, file.getAbsolutePath());
   ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_CACHE, "true");

   ve.init();

   VelocityContext context = new VelocityContext();

   if (properties != null) {
    stringfyNulls(properties);
    for (Map.Entry<String, Object> property : properties.entrySet()) {
     context.put(property.getKey(), property.getValue());
    }
   }

   final String templatePath = templateName + ".vm";
   Template template = ve.getTemplate(templatePath, "UTF-8");
   String outFileName = File.createTempFile("report", ".html").getAbsolutePath();
   BufferedWriter writer = new BufferedWriter(new FileWriter(new File(outFileName)));

   template.merge(context, writer);

   writer.flush();
   writer.close();
Run Code Online (Sandbox Code Playgroud)

当我在eclipse中运行时,这很好用.但是,一旦我打包程序并尝试使用命令行运行它,我得到一个错误,因为找不到该文件.

我想问题就在这一行:

ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, file.getAbsolutePath()); …
Run Code Online (Sandbox Code Playgroud)

java templates velocity jar classpath

45
推荐指数
3
解决办法
4万
查看次数

在速度中你可以迭代java hashmap的条目集()吗?

你能在速度模板中做这样的事情吗?

#set ($map = $myobject.getMap() )
#foreach ($mapEntry in $map.entrySet())
    <name>$mapEntry.key()</name>
    <value>$mapEntry.value()</value>
#end
Run Code Online (Sandbox Code Playgroud)

它会像这样输出空白标签:

<name></name> 
Run Code Online (Sandbox Code Playgroud)

<value></value> 
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

java xml velocity template-engine

41
推荐指数
2
解决办法
4万
查看次数

$ null检查速度

我通过您更新的资源在速度1.6中使用$ null来了解空检查.资源:读取在Velocity模板中映射的模型对象 但是我面临着很多挑战,因为没有提供关于此的文档,因此没有$ null用于null检查速度.请向我提供说明$ null的文档,以便对null检查速度有效.

在此先感谢幸运

java struts velocity

40
推荐指数
1
解决办法
6万
查看次数