标签: freemarker

在Freemarker中格式化日期,说"今天","昨天"等

freemarker中有没有办法比较日期来测试日期是今天还是昨天......或者我是否必须用Java编写代码来进行这些测试?

我基本上想要这样做:

<#------------------------------------------------------------------------------
 formatDate
------------------------------------------------------------------------------->
<#macro formatDate date showTime=true>
    <#if date??>
        <span class="Date">
            <#if date?is_today>
                Today
            <#elseif date?is_yesterday>
                Yesterday
            <#else>
                ${date?date}
            </#if>
        </span>
        <#if showTime>
            <span class="Time">${date?time}</span>
        </#if>
    </#if>
</#macro>
Run Code Online (Sandbox Code Playgroud)

编辑:我最好的猜测是将"今天"和"昨天"传递给使用此函数的页面的模型,然后将日期值与模型中的这两个对象进行比较.我没有选择,但我不想为每个使用此宏的页面执行此操作.还有其他更好的选择吗?

<#if date??>
    <span class="Date">
        <#if date?date?string.short == today?date?string.short>
            Today
        <#elseif date?date?string.short == yesterday?date?string.short>
            Yesterday
        <#else>
            ${date?date}
        </#if>
    </span>
    <#if showTime>
        <span class="Time">${date?time}</span>
    </#if>
</#if>
Run Code Online (Sandbox Code Playgroud)

format freemarker date

4
推荐指数
1
解决办法
9546
查看次数

Freemarker Hashtable <Integer,String>,按键迭代

我有一些使用Integers作为键的哈希表,我希望能够在我的Freemarker模板中迭代它们,但是,似乎没有任何效果.

我尝试了Freemarker迭代hashmap键的例子:


<#list user.props() as prop>
   ${prop} = ${user.get(prop)}
</#list>
Run Code Online (Sandbox Code Playgroud)

它可能适用于Strings作为键,但它不适用于Integers.我甚至无法通过具体值从哈希表中检索值.我拥有的是:

Hashtalbe ht = new Hashtable();
ht.put(1, "hello");
datamodel.put("devices", ht);
Run Code Online (Sandbox Code Playgroud)

(datamodel是传递给模板的hashmap).

在模板中,我执行以下操作:


<#if devices??>
 <#list devices?keys as prop>
  <p>${prop}</p>
  <p>${devices.get(1)}</p>

OR
<p>${devices.get(key)}</p>
OR
<p>${devices[key]}</p>
OR
<p>${devices[1]}</p> </#list> <#else> <p> no devices</p> </#if>
Run Code Online (Sandbox Code Playgroud)

但这些都不起作用.你能帮我吗?

PS.我将哈希表转换为将其传递给模板,但这似乎是一种解决方法.

最好的问候,蒂莫菲

freemarker hashtable

4
推荐指数
1
解决办法
4655
查看次数

FreeMarker:检查map值是否为null

我有一个Map,其键和值以及自定义类.调用密钥类,Position并使用两个int进行实例化(例如new Position(2, 4).

我摆脱了这个Position类并将地图转换为a SimpleHash以便与Freemarker一起使用.我现在有一个SimpleHash键为字符串重新映射位置值(例如"2 4"),其值是nullLot(自定义)类.

在模板中,我需要检查SimpleMap中给定项的值(传递为map)是null还是Lot实例.

        <#list mapMinY..mapMaxY as y>
            <tr>
                <#list mapMinX..mapMaxX as x>
                    <td>
                        <div>
                            <!-- Check if map[x + " " + y] is null -->
                            ${x}, ${y}
                        </div>
                    </td>
                </#list>
            </tr>
        </#list>
Run Code Online (Sandbox Code Playgroud)

这该怎么做?

java templates freemarker

4
推荐指数
1
解决办法
8121
查看次数

Freemarker嵌套列表

这很好用:

<#list myObjects as myObject>
  <tr>
    <td>${myObject.person.surname}</td>
    <td>${myObject.myListOfCountries[0].city.name}</td>
  </tr>
</#list> 
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试创建一个这样的嵌套列表,这不起作用:

<#list myObjects as myObject>
  <tr>
    <td>${myObject.person.surname}</td>
    <#list myObject.myListOfCountries as item>
       <td>${item.city.name</td>
    </#list> 
  </tr>
</#list> 
Run Code Online (Sandbox Code Playgroud)

我收到的错误如下所示:

freemarker.core.ParseException: Encountered "/"
Run Code Online (Sandbox Code Playgroud)

任何导致错误的想法 - 是freemarker中允许的嵌套列表吗?

java freemarker

4
推荐指数
1
解决办法
8919
查看次数

freemarker错误:预期哈希.而是评估为freemarker.template.SimpleScalar

我的模板看起来像这样:

  <#assign senti = "${scmr.results[model]}">
    <#if senti??>
      <td>${senti} ---- ${senti.sentimentType}</td>
      <td>${senti.score?html}</td>
    </#if>
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

POSITIVE(1.0/1) ---- Expected hash. senti evaluated instead to freemarker.template.SimpleScalar on line 5, column 27 in com/addthis/sentiment/sentidemo.ftl.
Run Code Online (Sandbox Code Playgroud)

"----"之前的输出文本表明senti确实是一个有效的java Sentiment对象.方法getSentimentTypegetScore存在并正常工作.

那么,为什么我会收到错误?

freemarker

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

Freemarker替代[语法]如果条件有数字

我正在使用替代的freemarker语法(带方括号的语法).它工作正常,但我无法弄清楚如果条件检查数字是否大于或小于如何使用.以下是我的语法

[#if ${numberCoupons} <= 1]
    [#assign couponsText = 'coupon']
[/#if]
Run Code Online (Sandbox Code Playgroud)

这里"<"符号失败.你知道我在这里做错了什么.

还有任何可以与freemarker的替代语法一起使用的整个指令列表的文档吗?

freemarker

4
推荐指数
1
解决办法
4808
查看次数

关于t.page的Freemarker utf-8编码问题

我在内页有问题.它只是将页面识别为iso,但我想要utf-8,我将其声明为默认字符集.我在freemarker配置上尝试了一些修改,但它们没有效果.

为spring-servlet.xml

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/pages/"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

template.html

<#macro page>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cemitério - Prefeitura Municipal de Maringá</title>
</head>

<body>
Usuários
<#nested/>
</body>
</html>
</#macro>
Run Code Online (Sandbox Code Playgroud)

的login.html

<#import "templates/template.html" as t/>

<@t.page>

<#if erroLogin??>
    ${erroLogin}
</#if>
<form action="entrar" method="post">
    <div>
        <label>Usuário:</label>
        <input type="text" name="usuario" />
        <br />
        <label>Senha:</label>
        <input type="text" name="senha" />
        <br />
        <input type="submit" name="submit" />
    </div>
</form>

</@t.page>
Run Code Online (Sandbox Code Playgroud)

产量

在此输入图像描述

html java spring freemarker utf-8

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

Freemarker For循环

他们以任何方式根据他们而不是一个一个地遍历列表项吗?我想以1,3,5,7,9和2,4,6,8的顺序遍历一系列字段.我尝试过像这样使用

<#list section.field as field>
 <div class="col1">
 ${field.@label}:<input type="text"/></div>
 <#if field_has_next>
 <div class="col2">
   ${field[field_index+1].@label}:<input type="text"/>
 </div>
 </#if>
</#list>
Run Code Online (Sandbox Code Playgroud)

但它给了我错误.

java freemarker

4
推荐指数
1
解决办法
9940
查看次数

在freemarker模板中获取区域设置

如何获取freemarker模板中使用的当前区域设置?我见过实施<spring.message code />

我需要这个做有条件的

<#if locale = DE >
.....
<#else>
....
</#if>
Run Code Online (Sandbox Code Playgroud)

spring freemarker spring-mvc

4
推荐指数
1
解决办法
3106
查看次数

Freemarker获取当前时间戳

如何获取freemarker文件中的当前时间戳(自1970年1月1日以来的秒数)?我知道.nowvar但我没有想到如何获得基本的时间戳格式.

java timestamp freemarker

4
推荐指数
1
解决办法
6019
查看次数

标签 统计

freemarker ×10

java ×5

spring ×2

date ×1

format ×1

hashtable ×1

html ×1

spring-mvc ×1

templates ×1

timestamp ×1

utf-8 ×1