标签: freemarker

Freemarker逃离freemarker

我正在使用freemarker生成一个freemarker模板.但我需要一些方法来逃避freemarker标签.

我怎么逃避<#list>标签或${expression}

freemarker

6
推荐指数
2
解决办法
9704
查看次数

使用单个freemarker模板显示任意pojos表

注意提升Freemarker大师:

我想使用单个freemarker模板来输出任意pojos的表,其中要显示的列与数据分开定义.问题是我无法弄清楚如何在运行时获取pojo函数的句柄,然后让freemarker调用该函数(lambda样式).从浏览文档看,Freemarker似乎支持函数式编程,但我似乎无法论证正确的咒语.

我掀起了一个简单的具体例子.假设我有两个列表:具有firstName和lastName的人员列表,以及带有品牌和型号的汽车列表.想输出这两个表:

<table>
  <tr>
    <th>firstName</th>
    <th>lastName</th>
  </tr>
  <tr>
    <td>Joe</td>
    <td>Blow</d>
  </tr>
  <tr>
    <td>Mary</td>
    <td>Jane</d>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

<table>
  <tr>
    <th>make</th>
    <th>model</th>
  </tr>
  <tr>
    <td>Toyota</td>
    <td>Tundra</d>
  </tr>
  <tr>
    <td>Honda</td>
    <td>Odyssey</d>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

但我想使用相同的模板,因为这是一个必须处理几十种不同的pojo类型的框架的一部分.

给出以下代码:

public class FreemarkerTest {

  public static class Table {
    private final List<Column> columns = new ArrayList<Column>();

    public Table(Column[] columns) {
      this.columns.addAll(Arrays.asList(columns));
    }

    public List<Column> getColumns() {
      return columns;
    }

  }

  public static class Column {
    private final String name;

    public Column(String name) {
      this.name = name; …
Run Code Online (Sandbox Code Playgroud)

freemarker

6
推荐指数
2
解决办法
8771
查看次数

Freemarker模板中的JSP标记

我想在freemarker模板中使用一些自定义标签,这很容易,因为我可以在我的web.xml文件中包含JspSupportServlet并在模板中包含以下行.

<#assign my=JspTaglibs["/WEB-INF/mytaglib.tld"] />
Run Code Online (Sandbox Code Playgroud)

但是,如果.tld捆绑在META-INF目录中的JAR文件中,我该怎么做呢?我试过这两个都没有运气.

<#assign my=JspTaglibs["/META-INF/mytaglib.tld"] />
<#assign my=JspTaglibs["/mynamespace"] />
Run Code Online (Sandbox Code Playgroud)

java jsp freemarker

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

如何评估Freemarker宏中的参数?

假设我们有一个简单的Freemarker宏:

<#macro myMacro expr>

    <#local x=1>
      ${expr}
    </#local>

    <#local x=2>
      ${expr}
    </#local>

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

<@myMacro“ A” />给出:

A A


我需要类似<@myMacro“ A $ {x}” />之类的东西:

A1 A2

但是在传递给宏之前,无法对$ {x}进行插值。即使我使用原始字符串r“ A $ {x}”作为参数,这也不起作用。

我试图玩?eval,但还没有结果(((

有可能做我所需要的吗?

freemarker

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

如何使用FreeMarker模板化嵌套的Pojos?

我正在调查使用FreeMarker编写EDI文件.这些基本上是格式化(和验证)的电子发票.我决定开始编写一个简单的例子,并且很难让它模板化'嵌套的pojo'.我的意思是一个包含POJO的POJO,其中两个都有我想要输出的数据.我写了一个单元测试(自包含),由于未知原因而失败.当我运行测试时,我得到以下异常:

Expression user.getSub is undefined on line 1, column 24 in simple.
The problematic instruction:
----------
==> ${user.getSub().user} [on line 1, column 22 in simple]
----------

Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Expression user.getSub is undefined on line 1, column 24 in simple.
    at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
    at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:134)
    <snip>
    example.TestFreeMarkerTemplating.testSimpleTemplate(TestFreeMarkerTemplating.java:23)
    <snip>
Run Code Online (Sandbox Code Playgroud)

我在模板上尝试了很多变化,并没有取得成功.这是测试:

package example;

import java.io.*;
import org.junit.Test;
import freemarker.cache.StringTemplateLoader;
import freemarker.ext.beans.BeansWrapper;
import freemarker.template.*;

import static org.junit.Assert.*;

public class TestFreeMarkerTemplating {

Configuration cfg = new Configuration();
StringTemplateLoader stringLoader = new StringTemplateLoader(); …
Run Code Online (Sandbox Code Playgroud)

java freemarker pojo

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

是否可以在FreeMarker模板文件中设置调试点?

我的应用程序中的视图层的FreeMarker模板文件中有很多编码.

我想知道我是否可以使用Eclipse设置调试点.有没有可用于调试FreeMarker模板文件的好插件?

eclipse freemarker

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

如何在Freemarker模板或javascript中以特定格式转换日期

从json,我得到的价值

"createdOn": "Jan 08 2015 20:40:56 GMT+0530 (IST)",
Run Code Online (Sandbox Code Playgroud)

我正在访问FTL

<#list variables as variable>
  <div class="reply">
   ${variable.createdOn}
  </div>
</#list>
Run Code Online (Sandbox Code Playgroud)

我得到的结果是

Jan 09 2015 12:36:18 GMT+0530 (IST)
Run Code Online (Sandbox Code Playgroud)

我更喜欢的格式是 09-01-2015

我需要删除剩余的时间GMT,IST等.

如何在Freemarker模板或javascript中转换它.

更新

我试着像这样传递下面

${variable.createdOn?datetime?string("dd-MM-yyyy")}
Run Code Online (Sandbox Code Playgroud)

但它给出了错误

Exception: java.text.ParseException - Unparseable date: "Jan 09 2015 12:36:18 GMT+0530 (IST)"
Run Code Online (Sandbox Code Playgroud)

任何帮助都是赞赏的.

谢谢

javascript freemarker date

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

在Freemarker中将ISO datetime字符串转换为标准日期格式

如何转换iso日期格式的字符串,如

"2015-06-28T03:39:43.176Z" 
Run Code Online (Sandbox Code Playgroud)

看起来像

"2015-06-28 03:39:43 PDT" using Freemarker?
Run Code Online (Sandbox Code Playgroud)

我试过一些像:

${x.Start?datetime(iso)?datetime}
${x.Start?datetime.iso?datetime}
Run Code Online (Sandbox Code Playgroud)

但那没用.

format freemarker date

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

为Android Studio创建自定义模板

我正在使用Android Studio,我想在初始屏幕(快速入门部分)中创建一个新的模板项目.我该怎么做?

快速开始

我已经在此之后创建了一个模板模块

android freemarker adt android-studio

6
推荐指数
0
解决办法
127
查看次数

使用HTML和Freemarker显示treetable

我必须做一个树结构来显示来自Java的数据.我正在使用jQuery的treetable插件,我无法获得我想要的输出.这是我的代码.

Freemarker:

<table id="dt_basic" class="table table table-bordered table-hover" width="100%">
                    <thead>
                        <tr>
                            <#list rows.getCols() as col>
                            <th>${col.getColumnName()}</th>
                            </#list>
                        </tr>
                    </thead>
                    <tbody>
                        <#list rows.getRows() as row>
                            <#if !parent??>
                                <#assign parent = row />
                                    <tr data-tt-id="${parent[rows.getCols()[0].getColumnName()]}" data-tt-branch="true">
                                        <td>${parent[rows.getCols()[0].getColumnName()]}</td>
                                        <td colspan="${rows.getCols()?size-1}"></td>
                                    </tr>
                            <#elseif row[rows.getCols()[0].getColumnName()] != parent[rows.getCols()[0].getColumnName()]>
                                <#assign parent = row />
                                    <tr data-tt-id="${parent[rows.getCols()[0].getColumnName()]}">
                                        <td>${row[col.getColumnName()]}</td>
                                        <td colspan="${rows.getCols()?size-1}"></td>
                                    </tr>
                            </#if>


                            <tr data-tt-id="1.1" data-tt-parent-id="${row[rows.getCols()[0].getColumnName()]}">
                                <#list rows.getCols() as col>
                                    <#if col?is_first>
                                        <td>${row[col.getColumnName()]}</td>
                                    <#else>
                                    <#if col.isRightAligned()>
                                        <td name="${col.getColumnName()}" align='RIGHT'>${row[col.getColumnName()]}</td>
                                    <#else>
                                        <td name="${col.getColumnName()}">${row[col.getColumnName()]}</td>
                                    </#if>
                                    </#if>
                                </#list>
                            </tr>

                        </#list>
                    </tbody> …
Run Code Online (Sandbox Code Playgroud)

html json freemarker treetable

6
推荐指数
0
解决办法
290
查看次数

标签 统计

freemarker ×10

date ×2

java ×2

adt ×1

android ×1

android-studio ×1

eclipse ×1

format ×1

html ×1

javascript ×1

json ×1

jsp ×1

pojo ×1

treetable ×1