标签: freemarker

Freemarker逃离freemarker

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

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

freemarker

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

Freemarker中的可以约会的日期

这是我的freemarker模板的一部分:

${order.needByDate?if_exists?date}

我希望它的工作方式如下:

  • 如果needByDate为null,则不写入任何内容
  • 如果它不为null,则写入日期部分

以上仅适用于第二种情况.实现这一目标的正确方法是什么?

java freemarker

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

关于freemarker模板的建议,想要创建一个主模板

我想创建一个每个其他视图页面都将继承的主模板.

所以主模板将具有:

HEADER
--CONTENT--
FOOTER
Run Code Online (Sandbox Code Playgroud)
  1. 标题将可选地显示(如果用户已登录),用户名和其他用户对象属性.

  2. --CONTENT--是占位符,其他"继承"视图页面将注入其内容.

所以我的问题是,这可能与freemarker有关吗?如果有,任何指导?

如何将用户对象从控制器操作传递到标头?理想情况下,对象将在每个视图页面以外的其他位置传递(以避免必须在每个视图页面上维护此代码).

java spring freemarker spring-mvc

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

使用Spring MVC时如何在Freemarker视图中设置内容类型?

我正在使用Sping MVC和freemarker视图.我设置了一个FreeMarkerViewResolver来解析视图,它到目前为止工作但现在我有编码问题.我的所有视图都是UTF-8编码的HTML 5页面,我还在<meta charset="UTF-8" />HTML页面中添加了一个,但字符仍然以错误的编码打印.我用curl检查了HTTP标头,发现了这个:

k@jules:~$ curl -I http://localhost:8080/testweb/test.view
HTTP/1.1 200 OK
Content-Type: */*;charset=ISO-8859-1
Run Code Online (Sandbox Code Playgroud)

但是,当我请求一些不存在的资源(生成Tomcat错误)时,我得到了这个:

k@jules:~$ curl -I http://localhost:8080/testweb/nothere.html
HTTP/1.1 200 OK
Content-Type: text/html;charset=utf-8
Run Code Online (Sandbox Code Playgroud)

因此Tomcat本身返回正确的内容类型,但Spring MVC Freemarker视图不会.

对于JSP,我可以在JSP标头中设置Content-Type,但是在哪里可以为freemarker模板设置它?我想我必须在Spring bean配置中的某个地方做这个,但我找不到合适的地方.

spring freemarker spring-mvc

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

如何评估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编码 - 带有重音字符的问号

我试图用Freemarker打印重音字符,但在重音字符的位置,我只得到问号.我已经证实,以下声明成立:

 "UTF-8" == Environment.getCurrentEnvironment().getConfiguration().getDefaultEncoding()
Run Code Online (Sandbox Code Playgroud)

我可以很容易地看到,在将变量字符赋予模板之前,它们已正确保存在变量中.

我的freemarker上下文可以在这里找到:https://gist.github.com/1975239

例如,而不是:

 Jedine?ný živý koncert, kde nejen, že uslyšíte, ale i uvidíte splynutí metalové kapely s padesáti?lenným orchestrem v?etn?.
Run Code Online (Sandbox Code Playgroud)

我一直在:

 Jedine?ný ?ivý koncert, kde nejen, ?e usly?íte, ale i uvidíte splynutí metalové kapely s padesáti?lenným orchestrem v?etn?.
Run Code Online (Sandbox Code Playgroud)

谢谢.

java freemarker

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

如何使用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,是否可以指示它默认将所有数字视为"计算机"?

我试着申请

cfg.setSetting(Configurable.NUMBER_FORMAT_KEY, "computer");
Run Code Online (Sandbox Code Playgroud)

要么

cfg.setNumberFormat("computer");
Run Code Online (Sandbox Code Playgroud)

配置对象,但结果不是理想的.相信这是文档的方法,有什么不对吗?

java freemarker

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

freemarker - 字符串比较 - 不允许运算符

我想比较两个字符串来判断第一个字符串是否比第二个字符串"更小".

<#if name1 <= name2>
....
</#if>
Run Code Online (Sandbox Code Playgroud)

错误:

Can't use operator "<=" on string values.
Run Code Online (Sandbox Code Playgroud)

这可以在FreeMarker中完成吗?是否可以String.compareTo在模板中调用该方法?

java freemarker string-comparison

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

使用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

java ×6

spring ×2

spring-mvc ×2

html ×1

json ×1

pojo ×1

string-comparison ×1

treetable ×1