关于Freemarker布尔类型与字符串异常处理和布尔类型标识符是的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于eclipse中安装freemarker插件及ftl使用freemarke
关于Freemarker 布尔类型与字符串异常处理和布尔类型标识符是的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于eclipse中安装freemarker插件及ftl使用freemarker编辑器、freemaker 中配置文件 freemarker.properties 详解、Freemarker (三): 模板处理、Freemarker - 基于换行符拆分字符串等相关知识的信息别忘了在本站进行查找喔。
本文目录一览:- Freemarker 布尔类型与字符串异常处理(布尔类型标识符是)
- eclipse中安装freemarker插件及ftl使用freemarker编辑器
- freemaker 中配置文件 freemarker.properties 详解
- Freemarker (三): 模板处理
- Freemarker - 基于换行符拆分字符串
Freemarker 布尔类型与字符串异常处理(布尔类型标识符是)
一、后台传值
setAttr("multi", true);
二、异常信息
<input type="hidden" name="multi" value="FreeMarker template error (DEBUG mode; use RETHROW in production!):
Can''t convert boolean to string automatically, because the "boolean_format" setting was "true,false", which is the legacy default computer-language format, and hence isn''t accepted.
----
Tip: If you just want "true"/"false" result as you are generting computer-language output, use "?c", like ${myBool?c}.
----
Tip: You can write myBool?string(''yes'', ''no'') and like to specify boolean formatting in place.
----
Tip: If you need the same two values on most places, the programmers should set the "boolean_format" setting to something like "yes,no".
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: ${multi} [in template "page/buss/upload/dialog.html" at line 32, column 42]
----
Java stack trace (for programmers):
----
freemarker.core._MiscTemplateException: [... Exception message was already printed; see it above ...]
at freemarker.core.Configurable.formatBoolean(Configurable.java:589)
at freemarker.core.EvalUtil.coerceModelToString(EvalUtil.java:360)
at freemarker.core.Expression.evalAndCoerceToString(Expression.java:82)
at freemarker.core.DollarVariable.accept(DollarVariable.java:40)
at freemarker.core.Environment.visit(Environment.java:312)
at freemarker.core.MixedContent.accept(MixedContent.java:62)
at freemarker.core.Environment.visit(Environment.java:312)
at freemarker.core.Environment.process(Environment.java:290)
at freemarker.template.Template.process(Template.java:312)
at com.jfinal.render.FreeMarkerRender.render(FreeMarkerRender.java:145)
at com.jfinal.core.ActionHandler.handle(ActionHandler.java:97)
at com.mlh.handler.GlobalHandler.handle(GlobalHandler.java:30)
at com.jfinal.ext.handler.ContextPathHandler.handle(ContextPathHandler.java:47)
at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:72)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:453)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:560)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:365)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:926)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:988)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:745)
三、处理方法
由原来
<input type="hidden" name="multi" value="${multi!}"/>
修改为
<input type="hidden" name="multi" value="${multi?string(''true'',''false'')}"/>
eclipse中安装freemarker插件及ftl使用freemarker编辑器
在线安装的方法是:Help –> Install New Software 点击 and
http://download.jboss.org/jbosstools/updates/development/indigo/
JBoss Application Development 下找到 FreeMarker IDE选中 点击Next
安装好重启eclipse就可以了。
freemaker 中配置文件 freemarker.properties 详解

classic_compatible=true ## 如果变量为 null, 转化为空字符串,比如做比较的时候按照空字符做比较
whitespace_stripping=true ## 去掉多余的空格,非常有用
## 模版更新事件,设置为 1 秒,正式环境设置为 3600 秒
#template_update_delay=3600
template_update_delay=1 ## 模版更新时间,这里配置是 1 秒更新一次,正式环境,模版不会改变,可以将这个值设很大,提高效率。就是被这个参数害死了。老是不更新.
locale=zh_CN ## 中国
default_encoding=utf-8 ## 编码 utf8
url_escaping_charset=utf-8 ##url 编码 utf8
date_format=yyyy-MM-dd ## 显示日期格式
time_format=HH:mm:Ss ## 显示时间格式
datetime_format=yyyy-MM-dd ## 显示日期格式
number_format=\#0.\#\#\#\#\# ## 数字显示格式 hi.
#template_update_delay=1
datetime_format=yyyy-MM-dd HH:mm:ss
date_format=yyyy-MM-dd
time_format=HH:mm:ss
number_format=0.######;
boolean_format=true,false
auto_import="/common/index.ftl" as ui
whitespace_stripping=true
default_encoding=UTF-8
tag_syntax=auto_detect ## 设置标签的类型
url_escaping_charset=UTF-8
里面大部分都不解释了,就解释一个,
auto_import="/common/index.ftl" as ui 这个表示每个 freemarker 的视图页面都会自动引入这个 ftl 文件。里面定义的就是一些宏,如 text 文本框,各种 form 元素
Freemarker (三): 模板处理
/** To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package utils;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import java.io.File;
import java.io.IOException;
import java.io.Writer;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Adam
*/
public class TemplateUtil {
/**
* 处理模板
* @param templateFile
* @param data
* @param out
*/
public static void process(File templateFile, Map<String, Object> data, Writer out) {
try {
Configuration configuration = new Configuration();
configuration.setDirectoryForTemplateLoading(templateFile.getParentFile());
configuration.setObjectWrapper(new DefaultObjectWrapper());
//<editor-fold defaultstate="collapsed" desc="添加自定义标签">
configuration.setSharedVariable("upper", new UpperDirective());
configuration.setSharedVariable("column", new ColumnDirective());
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="添加自定义方法">
data.put("url", new UrlMethod());
//</editor-fold>
Template template = configuration.getTemplate(templateFile.getName(), "utf-8");
template.process(data, out);
} catch (TemplateException ex) {
Logger.getLogger(TemplateUtil.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(TemplateUtil.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
out.flush();
out.close();
} catch (IOException ex) {
Logger.getLogger(TemplateUtil.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
/**
* 读取模板文件内容
* @param templateFilePath
* @return 模板文件内容
*/
public static String read(String templateFilePath) {
File templateFile = new File(templateFilePath);
String templateFileContent = null;
try {
templateFileContent = FileUtil.readFileToString(templateFile, "UTF-8");
} catch (IOException ex) {
Logger.getLogger(TemplateUtil.class.getName()).log(Level.SEVERE, null, ex);
}
return templateFileContent;
}
/**
* 写入模板文件内容
* @param templateFilePath
* @param templateFileContent
*/
public static String write(String templateFilePath, String templateFileContent) {
File templateFile = new File(templateFilePath);
try {
FileUtil.writeStringToFile(templateFile, templateFileContent, "UTF-8");
} catch (IOException ex) {
Logger.getLogger(TemplateUtil.class.getName()).log(Level.SEVERE, null, ex);
}
return templateFileContent;
}
}
Freemarker - 基于换行符拆分字符串
如何解决Freemarker - 基于换行符拆分字符串?
我想根据行分割一个字符串,意思是在单独的行上分离内容。
Example -
Hello I
am
Bill Gates
Final Array should be ["Hello I","am","Bill Gates"]
我尝试使用 split 函数并传递 ''\n'' 但它不起作用。
<#assign finalValue = body?split(''\n'') />
在这种情况下我没有得到想要的结果。你能帮我解决这个问题吗?
欲了解更多详情,请阅读下文 -
我正在尝试从地址中获取国家/地区。国家总是在地址的最后一行,所以我试图根据行拆分地址,从而获取所需输出的最后一行。
Example -
ABC,Industries Ltd.,XYZ Street,United States.
所以在这里,我使用 split 函数作为地址?split("\n") 但它不起作用。
因此,我尝试使用 Developers Console 进行拆分,并且在那里运行良好。使用 split() 函数。
虽然在获取地址值后,我将其作为 -
ABC,\n XYZ Street,\nUnited States
。
因此,想使用 \n 进行拆分,但没有用!
解决方法
常见的问题是使用了 3 种换行符:\r\n
(Windows 和某些 Web 协议)、\n
(其他所有协议)和很少使用的 \r
(旧 Mac)。适用于所有的拆分是 ?split(r''\R'',''r'')
。请注意,R
是 \R
中的大写。这是一个正则表达式结构,从 Java 8 开始支持。
关于Freemarker 布尔类型与字符串异常处理和布尔类型标识符是的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于eclipse中安装freemarker插件及ftl使用freemarker编辑器、freemaker 中配置文件 freemarker.properties 详解、Freemarker (三): 模板处理、Freemarker - 基于换行符拆分字符串的相关信息,请在本站寻找。
本文标签: