我在FTL文件中创建了一个DIV,DIV包含表单现在说我有另一个FTL文件,我想在第二个FTL文件中使用第一个FTL的div这是可能的
<div id="filterReportParameters" style="display:none">
<form method="POST" action="${rc.getContextPath()}/leave/generateEmpLeaveReport.json" target="_blank">
<table border="0px" class="gtsjq-master-table">
<tr>
<td>From</td>
<input type="hidden" name="empId" id="empId"/>
<td>
<input type="text" id="fromDate" name="fromDate" class="text ui-widget-content ui-corner-all" style="height:20px;width:145px;"/>
</td>
<td>Order By</td>
<td>
<select name="orderBy" id="orderBy">
<option value="0">- - - - - - - Select- - - - - - - -</option>
<option value="1">Date</option>
<option value="2">Leave Type</option>
<option value="3">Transaction Type</option>
</select>
</td>
</tr>
<tr>
<td>To</td>
<td><input type="text" id="toDate" name="toDate" class="text ui-widget-content ui-corner-all" style="height:20px;width:145px;"/>
</tr>
<tr>
<td>Leave Type</td>
<td>
<select name="leaveType" id="leaveType">
<option …Run Code Online (Sandbox Code Playgroud) 我正在使用Freemarker构建一个站点并且已经开始大量使用宏.我知道在Freemarker 2.3中,将空值作为参数传递给宏等同于根本不传递参数所以我创建了一个名为"null"的全局变量来模拟我的宏中的空值检查:
<#assign null="NUL" />
Run Code Online (Sandbox Code Playgroud)
现在在我的宏中我可以这样做:
<#maco doSomething param1=null>
<#if param1 != null>
<div>WIN!</div>
</#if>
</#macro>
Run Code Online (Sandbox Code Playgroud)
如果我想传递一个不是标量的参数,问题就来了.例如,将List(在Freemarker中是SimpleSequence)传递给宏并检查我的null关键字会产生错误:
freemarker.template.TemplateException:唯一合法的比较是在两个数字,两个字符串或两个日期之间.左手操作数是freemarker.template.SimpleSequence右手操作数是freemarker.template.SimpleScalar
我看了一下freemarker代码,我可以看到问题(ComparisonExpression.isTrue()):
if(ltm instanceof TemplateNumberModel && rtm instanceof TemplateNumberModel) {
...
}
else if(ltm instanceof TemplateDateModel && rtm instanceof TemplateDateModel) {
...
}
else if(ltm instanceof TemplateScalarModel && rtm instanceof TemplateScalarModel) {
...
}
else if(ltm instanceof TemplateBooleanModel && rtm instanceof TemplateBooleanModel) {
...
}
// Here we handle compatibility issues
else if(env.isClassicCompatible()) {
...
}
else {
throw new TemplateException("The only legal …Run Code Online (Sandbox Code Playgroud) 是否可以将自由标记列表分配给Javascript数组?是否存在任何其他技术来实现相同的目标?
假设我有以下代码
<#list messages.thread.messages.topic as message>
<div id="subject">${posts.subject}</div>
<div id="teaser">${posts.teaser}</div>
<div id="body">${message.body}</div>
</#list>
function script(){
//I want to access the free marker list message here
}
Run Code Online (Sandbox Code Playgroud) 如何抑制FreeMarker模板错误?我在这里看:http://freemarker.sourceforge.net/docs/pgui_config_errorhandling.html 但我不明白如何"TemplateExceptionHandler.IGNORE_HANDLER".我正在使用Struts2以及如何显示另一个ftl页面而不是显示堆栈跟踪?
class MyTemplateExceptionHandler implements TemplateExceptionHandler {
public void handleTemplateException(TemplateException te, Environment env, java.io.Writer out)
throws TemplateException {
try {
out.write("[ERROR: " + te.getMessage() + "]");
} catch (IOException e) {
throw new TemplateException("Failed to print error message. Cause: " + e, env);
}
}
}
...
cfg.setTemplateExceptionHandler(new MyTemplateExceptionHandler());
Run Code Online (Sandbox Code Playgroud)
在http://freemarker.sourceforge.net/docs/pgui_config_errorhandling.html上找到了上面的内容 我如何使用它?最后一行,cfg来自哪里?
"进入FreeMarker API的主要入口点"...... http://massapi.com/source/freemarker-2.3.18/src/freemarker/template/Configuration.java.html
所以,这是主要的切入点,我猜cfg来自这个类.我仍然没有看到控制器将如何进入我的类MyTemplateExceptionHandler.
以下行需要去哪里?
cfg.setTemplateExceptionHandler(new MyTemplateExceptionHandler());
Run Code Online (Sandbox Code Playgroud)
这只是将这条线放在正确位置的问题吗?
这是我当前班级的样子:
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.Writer;
import java.util.Properties;
import freemarker.cache.FileTemplateLoader;
import freemarker.cache.MultiTemplateLoader;
import …Run Code Online (Sandbox Code Playgroud) 我的网站在所有页面上都有一个一致的页眉和页脚.
做这个的最好方式是什么?
根据当前视图,标题也会有一些动态数据.
PS freemarker是否具有任何类型的母版页功能?我可以在哪里创建基本模板,然后在基础上构建其他模板?
基本上我想设计一个模板,它有页眉和页脚+主要内容区域的占位符.然后,所有其他页面将继承主模板(带有页眉+页脚),然后将动作的渲染输出注入模板主内容区域.
我正试图从FreeMarker中的字符串中获取子字符串.但是有两个方面需要考虑:
我做以下事情:
<#list landingpage1.popularItems as row>
<li>
<span class="minititle">
<#assign minititle=(row.title!"")>
<#if minititle?length < 27>
${minititle}
<#else>
${minititle?substring(0,26)} ...
<#/if>
</span>
</li>
</#list>
Run Code Online (Sandbox Code Playgroud)
我收到一条freemarker错误说:
Failed to load templates: Encountered "</#list>" at line 144, column 65 in landingpage1.ftl.
Was expecting one of:
<ATTEMPT> ...
<IF> ...
<LIST> ...
<FOREACH> ...
<SWITCH> ...
<ASSIGN> ...
<GLOBALASSIGN> ...
<LOCALASSIGN> ...
<INCLUDE> ...
<IMPORT> ...
<FUNCTION> ...
<MACRO> ...
<TRANSFORM> ...
<VISIT> ...
<STOP> ...
<RETURN> ...
<CALL> ...
<SETTING> ...
<COMPRESS> …Run Code Online (Sandbox Code Playgroud) 从我的java代码我返回一个Set <String>.该视图需要检查Set是否包含特定字符串..我找不到任何关于Freemarker如何处理此问题的文档.
任何的想法?
作为使用Spring的富Web应用程序的视图技术,Freemarker的一些现代的,更高效的替代品是什么?Spring MVC/Freemarker仍然是最好的组合之一,还是其他组合?
我必须构建的应用程序很小,但很复杂,可能需要大量的自定义javascript,因为所有的控件和ui都是非标准的(它不是真正的业务应用程序).暴雪的游戏网站就像暗黑破坏神3一样,是我想要做的一个例子.
这种组合仍然是最适合我的需求,还是有其他技术我应该看看?
谢谢
使用FreeMarker,我想以毫秒为单位显示日期:
${mydate?long}
Run Code Online (Sandbox Code Playgroud)
但我得到一个逗号分隔毫秒作为输出:
524,354,400,000
Run Code Online (Sandbox Code Playgroud)
Freemarker中是否有任何内置函数可以删除逗号?
谢谢
尽管围绕freemarker + spring进行了很多讨论,但很难找到复制和运行的简洁工作示例.
您能否在spring xml上下文中提供最简单的freemarker工作配置和java代码片段,以便从资源文件中加载模板并对其进行处理.
freemarker ×10
java ×9
spring ×3
spring-mvc ×2
ajax ×1
collections ×1
contains ×1
date ×1
html ×1
javascript ×1
jquery ×1
jstl ×1
struts2 ×1