标签: freemarker

过滤带表达式的bean列表

我有一个bean列表,我希望得到一个子列表,其中一个或多个属性的条件与表达式匹配如下:

${data[propertyName=='my value']}
Run Code Online (Sandbox Code Playgroud)

data是具有名为propertyName的属性的bean列表.

这样的方法可能吗?如果没有,那么最好的办法是什么.

非常感谢您的回答.蒂埃里

freemarker

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

在 Freemarker 中合并地图


我找不到有关如何合并两个哈希映射的任何文档。这就是我想要实现的

<select <@render_attrs commonattrs. 合并({"class":"select"}) /> > ....

<#macro render_attrs attrs>
<#list attrs?keys as key>
<#if attrs[key]!="">
${key}="${attrs[key]}"
</#if>
</#list >

freemarker map literals built-in built-in-types

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

如何在全局范围内创建Freemarker功能?

如何创建全局可用的功能?

目前,该应用程序的结构如下:

  • 一个明显的模板每个样的请求,例如,(例如,对于一本书,作者或出版商不同的模板):
  • 这些模板中的每一个都使用来自page.ftl中的宏的公共元素进行修饰,例如:
[#ftl]
[#macro decorate]
<html>
  <head>
  <!-- some stuff here -->
  </head>
  <body>
    <header><!-- more stuff here --></header>
    <div id="main-content">[#nested /]</div>
    <footer><!-- more stuff here --></footer>
  </body>
</html>
[/#macro]
Run Code Online (Sandbox Code Playgroud)

所以,book.ftl看起来像:

[#ftl]
[#include page.ftl p]
[@p.decorate]
<h1>Book: The Bible</h1>
<dl>
  <dt>Author:</dt>
  <dd>God</dd>
</dl>

[#-- HERE'S THE IMPORTANT BIT --]
[@myFunctionHere('The Bible') /]

[#-- I ALSO NEED TO BE ABLE TO CALL myFunction IN INCLUDED PAGES TOO --]
[#import "_partial.ftl" /]

[/@p.decorate]
Run Code Online (Sandbox Code Playgroud)

我想创建一个全局函数,该函数将被定义并包含一次并且可以在任何地方使用(在book.ftl和其他函数中,以及它导入/包含的任何模板).

我怎么会这样,最好没有它自己的命名空间?

scope freemarker

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

如何在Freemarker模板中访问Spring应用程序属性?

我有使用Spring 3.1的Java webapp,Freemarker模板用于渲染视图.我想根据特定应用程序属性的true/false值有条件地在视图中显示一个链接.

我在以下位置定义了以下app属性src/main/resources/application.properties:

showLink=true

如果我使用常规JSP与Spring MVC,我可以使用SpEL根据以下值有条件地显示链接showLink:

<c:if test="${configuration['showLink']}">
    <a href="...">some link</a>
</c:if>
Run Code Online (Sandbox Code Playgroud)

我如何在Freemarker模板中执行此操作?我尝试过这样的事情,但无法让它发挥作用:

<#assign showLink>${configuration['showLink']}</#assign>

<#if showHelpLink>
    <a href="...">some link</a>
</#if>
Run Code Online (Sandbox Code Playgroud)

我查看了Spring freemarker宏(在spring.ftl中),但我看到的最接近的是能够获取消息属性,而不是app属性.

我试过的东西没用

  1. 我查看了spring.ftl中的宏,但它最接近的是给我消息属性.

  2. 此外,我无法将值注入控制器然后将其放入ModelMap,因为我的FreeMarker模板是所有页面的标题,因此它是自动导入的:

<bean id="abstractFreemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer" abstract="true">
    ...
    <property name="freemarkerSettings">
        <props>
            <prop key="auto_import">
                /spring.ftl as spring, /myTemplate.ftl as myTemplate
            </prop>
        </props>
    </property>
    ...
</bean>
Run Code Online (Sandbox Code Playgroud)

我还没有尝试过的事情

  1. 我发现了一篇博客文章,描述了如何手动将支持SpEL添加到Freemarker.在我需要它的情况下,我宁愿不做所有这些.

  2. 创建自定义标记库以检索应用程序属性值,因此我可以在我的freemarker模板中执行以下操作:

<#assign showLink><foo:getAppProperty name="showLink"/></#assign>
Run Code Online (Sandbox Code Playgroud)

spring freemarker spring-mvc

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

带Freemarker的ClassNotFoundException

对不起我的noobie问题,但我无法弄清楚.

我有一个运行在GAE上的应用程序,使用Spring MVC,我正在尝试添加Free Marker作为模板语言.

在我的pom.xml中,我有:

<dependency>
 <groupId>org.freemarker</groupId>
 <artifactId>freemarker</artifactId>
 <version>2.3.20</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

另外,在我的调度程序配置中,我已经配置了这样的freemarker视图解析器:

<!-- freemarker config -->
<bean id="freemarkerConfig"
    class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/views/" />
</bean>

<!-- View resolvers can also be configured with ResourceBundles or XML files. 
    If you need different view resolving based on Locale, you have to use the 
    resource bundle resolver. -->
<bean id="viewResolver"
      class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="cache" value="true" />
    <property name="prefix" value="" />
    <property name="suffix" value=".ftl" />
</bean>
Run Code Online (Sandbox Code Playgroud)

当我使用Eclipse启动Web服务器时,我得到一个classnotfound异常(见下文),但我无法弄清楚缺少什么以及如何添加它=(

你能帮帮我吗?

谢谢!

2013-11-07 17:30:17.097:WARN::Nested in org.springframework.beans.factory.BeanCreationException: Error creating bean with …
Run Code Online (Sandbox Code Playgroud)

java freemarker spring-mvc

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

动态Freemarker变量名称

我正在尝试使用动态名称设置变量。这意味着我的新变量的名称来自另一个变量:

<#-- in real world I wouldn't declare this variables right here -
     they would come from somewhere else -->
<#assign varName = "myVarName"/>
<#assign varValue = "myVarValue/>

<#... set the variable .../>
Run Code Online (Sandbox Code Playgroud)

这样就可以参考以下值:

${myVarName} <#-- prints "myVarValue" -->
Run Code Online (Sandbox Code Playgroud)

在Java指令中,我将使用

Environment#setVariable(String name, TemplateModel model)
Run Code Online (Sandbox Code Playgroud)

为了达成这个。但是有可能用Freemarker直接实现这一目标吗?

variables freemarker

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

仅在freemarker中创建“对象”(没有JAVA等)?

在阅读了Freemarker文档并进行了搜索之后,我只是看不到如何仅在Freemarker中构建测试对象(如关联的多级数组)。

像这样:

<#assign seq=["a","b","c"]>
Run Code Online (Sandbox Code Playgroud)

但更深入地讲-像(伪):

   a
     aa ab ac ad
   b
     ba bb bc
   c
     ca cb cc cd ce
Run Code Online (Sandbox Code Playgroud)

这仅在freemarker中可能吗(当前端开发人员在等待后端人员完成它时,我真的需要像这样的东西来工作而不使用裸数组)?

特纳克斯

arrays freemarker object associative

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

将Freemarker集成到Spring mvc时出错

我试图将Freemarker模板集成到Spring mvc应用程序中.我试过它作为教程中的节目.这是代码,我使用的是freemarker 2.3.15

servletcontext.xml

 <!-- freemarker config -->
    <beans:bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
      <beans:property name="templateLoaderPath" value="/WEB-INF/views/"/>
    </beans:bean>

    <!--
      View resolvers can also be configured with ResourceBundles or XML files. If you need
      different view resolving based on Locale, you have to use the resource bundle resolver.
    -->
    <beans:bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
      <beans:property name="cache" value="true"/>
      <beans:property name="prefix" value="/WEB-INF/views/"/>
      <beans:property name="suffix" value=".ftl"/>
    </beans:bean>
Run Code Online (Sandbox Code Playgroud)

它给出了错误:

1. Build path is incomplete. Cannot find class file for org/springframework/ui/freemarker/
 FreeMarkerConfigurationFactory

2.No setter found for property 'templateLoaderPath' in class 
 'org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer' …
Run Code Online (Sandbox Code Playgroud)

java template-engine freemarker spring-mvc

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

无法读取Freemarker模板中的对象值

我很能读取Freemarker Templet中的scala / java对象值

我尝试了这个:

    case class ScheduleEmail(workOrderNo:String,
                             name:String,
                             woType:String,
                             numberOfAssets:String,
                              artisan:String,
                             dueDate:Date,priority:String)

    object ScheduleMailSending extends  App{
      val scheduleEmail1= List(ScheduleEmail("1", "Oil Change1", "WO", "3", "XYZ", Date.valueOf("2015-01-01"), "High"))
      val configaration = new Configuration
      configaration.setClassForTemplateLoading(this.getClass, "/")
      configaration.setObjectWrapper(new DefaultObjectWrapper())
      val data: util.HashMap[String, Object] = new util.HashMap[String, Object]
      val templet = configaration.getTemplate("schedule.ftl")
      data.put("mails",scheduleEmail1.asJava)
      val writer =new StringWriter()
     templet.process(data,writer)
      println("writer"+writer)
    }
Run Code Online (Sandbox Code Playgroud)

我的模板是

<#list mails as std>

    WorkOrderNo:${std.workOrderNo}
    woType:${std.woType}

</#l
Run Code Online (Sandbox Code Playgroud)

我正在为这个错误而苦恼-

SEVERE: Error executing FreeMarker template
FreeMarker template error:
For "${...}" content: Expected a string or …
Run Code Online (Sandbox Code Playgroud)

velocity freemarker scala

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

重定向到新页面?

我正在使用一个自定义的Magnolia表单模块(在公司内部构建)。用户成功提交表单后,我想将用户重定向到成功页面。

这可以在模块本身中完成。但是,如果用户未成功提交表单(例如,缺少必填字段),则需要显示错误消息。

因此,我需要使用FreeMarker来实现重定向。

我没有尝试任何事情,因为没有关于此问题的文档。

freemarker magnolia

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