freemarker 可以使用jsp标签,但只有你用了他的 freemarkerservlet,这个功能才能有效。如果你想生成静态文件那么这样就不行了
使用jsp标签的方法 使用心得
<#global hm=JspTaglibs["/WEB-INF/struts-html.tld"]>
<@hm.form action="logon.do" method="post">
<input name="username" type="text" />
<input name="password" type="password"/>
<input type="submit" name="submit"></button>
</@hm.form>
<@include_page path= "/error.jsp"/>
可以这样来支持jsp标签
也可以支持jsp:include 这个标签
其本质是在model中添加了 对jsptaglibs和tabinclude 的标记
这是 freemarkerservlet 中 对templateModel的初始化 从以下红色代码可以看出,想要自己处理jsptaglibs 而不去调用它的servlet 只需要在自己的model中添加上这个值对就可以了,应用环境 servlet
需
要注意的一个问题 使用include这个标签是
由于传入的是request和response这两个参数,include来的内容会写入到response中,而不是自己指定的out中,所以这部分可
能需要进行一些修改,如果只是其用来做表示层 那么很容易(本来就是这么做的)
protected TemplateModel createModel(ObjectWrapper wrapper,
ServletContext servletContext,
final HttpServletRequest request,
final HttpServletResponse response) throws TemplateModelException {
try {
AllHttpScopesHashModel params = new AllHttpScopesHashModel(wrapper, servletContext, request);
// Create hash model wrapper for servlet context (the application)
ServletContextHashModel servletContextModel =
(ServletContextHashModel) servletContext.getAttribute(
ATTR_APPLICATION_MODEL);
if (servletContextModel == null)
{
servletContextModel = new ServletContextHashModel(this, wrapper);
servletContext.setAttribute(
ATTR_APPLICATION_MODEL,
servletContextModel);
TaglibFactory taglibs = new TaglibFactory(servletContext);
servletContext.setAttribute(
ATTR_JSP_TAGLIBS_MODEL,
taglibs);
initializeServletContext(request, response);
}
params.putUnlistedModel(KEY_APPLICATION, servletContextModel);
params.putUnlistedModel(KEY_APPLICATION_PRIVATE, servletContextModel);
params.putUnlistedModel(KEY_JSP_TAGLIBS, (TemplateModel)servletContext.getAttribute(ATTR_JSP_TAGLIBS_MODEL));
// Create hash model wrapper for session
HttpSessionHashModel sessionModel;
HttpSession session = request.getSession(false);
if(session != null) {
sessionModel = (HttpSessionHashModel) session.getAttribute(ATTR_SESSION_MODEL);
if (sessionModel == null || sessionModel.isZombie()) {
sessionModel = new HttpSessionHashModel(session, wrapper);
session.setAttribute(ATTR_SESSION_MODEL, sessionModel);
if(!sessionModel.isZombie()) {
initializeSession(request, response);
}
}
}
else {
sessionModel = new HttpSessionHashModel(this, request, response, wrapper);
}
params.putUnlistedModel(KEY_SESSION, sessionModel);
// Create hash model wrapper for request
HttpRequestHashModel requestModel =
(HttpRequestHashModel) request.getAttribute(ATTR_REQUEST_MODEL);
if (requestModel == null || requestModel.getRequest() != request)
{
requestModel = new HttpRequestHashModel(request, response, wrapper);
request.setAttribute(ATTR_REQUEST_MODEL, requestModel);
request.setAttribute(
ATTR_REQUEST_PARAMETERS_MODEL,
createRequestParametersHashModel(request));
}
params.putUnlistedModel(KEY_REQUEST, requestModel);
params.putUnlistedModel(KEY_INCLUDE, new IncludePage(request, response));
params.putUnlistedModel(KEY_REQUEST_PRIVATE, requestModel);
// Create hash model wrapper for request parameters
HttpRequestParametersHashModel requestParametersModel =
(HttpRequestParametersHashModel) request.getAttribute(
ATTR_REQUEST_PARAMETERS_MODEL);
params.putUnlistedModel(KEY_REQUEST_PARAMETERS, requestParametersModel);
return params;
} catch (ServletException e) {
throw new TemplateModelException(e);
} catch (IOException e) {
throw new TemplateModelException(e);
}
}
分享到:
相关推荐
spring mvc freemarker 自定义标签demo spring mvc 通过自定义的标签在jsp页面调用,初学,记录下做个备忘
当前java web开发的主流已是spring boot,但还有很多老项目是基于spring web以及jsp...此工具使用python解析jsp文件并把Jsp标准标签解析为freemarker模板语言,以协助开发者把spring web项目转换为spring boot项目。
Freemaker是一个”模板引擎”,也可以说是一个基于模板技术的生成文本输出的一个通用工具.它是一个JAVA的包,一个JAVA程序员可以使用的类库....注意,它是MVC框架的一个组件(如STRUTS),也可以在模板中使用JSP标签.
jsp,jstl,freemarker
几个jsp生成html事例,以及freemarker标签说明
1、不能编写java代码,可以实现严格的mvc分离 2、性能非常不错 3、对jsp标签支持良好 4、内置大量常用功能,使用非常方便 5、宏定义(类似jsp标签)非常方便 6、使用表达式语言
其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替>会有更好的效果,因为 FreeMarker会把>解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:(x>y)> ...
什么是FreeMarker? ................................................................................................. 7 我们应该阅读什么内容? .............................................................
1、 首先用office【版本要2003以上,以下的不支持xml格式】编辑文档的样式,将需要动态填充的内容使用Freemarker标签替换:Word文档样式如下: 2、 将Word文档另存为XML格式,将后缀名“xml”修改为“ftl” 3、...
大多数的标签都可以用于所有的模板语言(参考 JSP Tags, Velocity Tags,和 FreeMarker Tags),但是有一些只能用于特定的模板语言。 无论什么时候一个标签不能完全的支持每一个模板, 该标签会在参考文档中注明。 ...
Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。...包括最常用的jsp页面,也可以说Velocity和FreeMarker等模板技术中的使用
本手册收集了: 1、struts 1 各类型标签 ...6、jsp标签、语法 7、freemarker语法 8、velocity语法 9、ajax常用函数 10、常用js表单检测函数 11、常用js函数 12、多功能jsp编辑器(eclipse插件)
Control,Data,Form,FreeMarker,JSP,Non,Form,Tag标签详解
Struts2 标签 Struts bean ...JSP标签/语法 Spring 标签 Spring 表单标签 freemarker语法 velocity 语法 JSF 核心标签 JSF 表单标签 AJAX 常用函数 JS 常用检测函数 JS 常用函数 JSP 编辑器(eclipse插件)
3.Struts2标签使用前的准备: (1)在要使用标签的jsp页面引入标签库: (2)在web.xml中声明要使用的标签 这样是struts2 2.3.1.2版本的引入方式 <filter-name>struts2 <filter-class>org.apache....
struts 1 各类型标签 struts 2 标签 jstl 各类型标签 spring 标签 jsf标签 jsp标签、语法 freemarker语法 velocity语法 ajax常用函数 常用js表单检测函数 常用js函数
本手册收集了:1、struts 1 各类型标签2、struts 2 标签3、jstl 各类型标签4、spring 标签5、jsf标签6、jsp标签、语法7、freemarker语法8、velocity语法9、ajax常用函数10、常用js表单检测函数11、常用js函数12、多...
FreeMarker 手册 .......................................................................................................... 1 用于 FreeMarker 2.3.18 .......................................................