我有一个bean列表,我希望得到一个子列表,其中一个或多个属性的条件与表达式匹配如下:
${data[propertyName=='my value']}
Run Code Online (Sandbox Code Playgroud)
data是具有名为propertyName的属性的bean列表.
这样的方法可能吗?如果没有,那么最好的办法是什么.
非常感谢您的回答.蒂埃里
我找不到有关如何合并两个哈希映射的任何文档。这就是我想要实现的
<select <@render_attrs commonattrs. 合并({"class":"select"}) /> > ....
<#macro render_attrs attrs>
<#list attrs?keys as key>
<#if attrs[key]!="">
${key}="${attrs[key]}"
</#if>
</#list >
如何创建全局可用的功能?
目前,该应用程序的结构如下:
[#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和其他函数中,以及它导入/包含的任何模板).
我怎么会这样,最好没有它自己的命名空间?
我有使用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属性.
我查看了spring.ftl中的宏,但它最接近的是给我消息属性.
此外,我无法将值注入控制器然后将其放入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)
我发现了一篇博客文章,描述了如何手动将支持SpEL添加到Freemarker.在我需要它的情况下,我宁愿不做所有这些.
创建自定义标记库以检索应用程序属性值,因此我可以在我的freemarker模板中执行以下操作:
<#assign showLink><foo:getAppProperty name="showLink"/></#assign>
Run Code Online (Sandbox Code Playgroud) 对不起我的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) 我正在尝试使用动态名称设置变量。这意味着我的新变量的名称来自另一个变量:
<#-- 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直接实现这一目标吗?
在阅读了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中可能吗(当前端开发人员在等待后端人员完成它时,我真的需要像这样的东西来工作而不使用裸数组)?
特纳克斯
我试图将Freemarker模板集成到Spring mvc应用程序中.我试过它作为教程中的节目.这是代码,我使用的是freemarker 2.3.15
<!-- 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) 我很能读取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) 我正在使用一个自定义的Magnolia表单模块(在公司内部构建)。用户成功提交表单后,我想将用户重定向到成功页面。
这可以在模块本身中完成。但是,如果用户未成功提交表单(例如,缺少必填字段),则需要显示错误消息。
因此,我需要使用FreeMarker来实现重定向。
我没有尝试任何事情,因为没有关于此问题的文档。
freemarker ×10
spring-mvc ×3
java ×2
arrays ×1
associative ×1
built-in ×1
literals ×1
magnolia ×1
map ×1
object ×1
scala ×1
scope ×1
spring ×1
variables ×1
velocity ×1