`

freemarker 使用jsp标签

阅读更多

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 自定义标签

    spring mvc freemarker 自定义标签demo spring mvc 通过自定义的标签在jsp页面调用,初学,记录下做个备忘

    批量转换jsp为freemarker

    当前java web开发的主流已是spring boot,但还有很多老项目是基于spring web以及jsp...此工具使用python解析jsp文件并把Jsp标准标签解析为freemarker模板语言,以协助开发者把spring web项目转换为spring boot项目。

    FreeMarker中文文档

    Freemaker是一个”模板引擎”,也可以说是一个基于模板技术的生成文本输出的一个通用工具.它是一个JAVA的包,一个JAVA程序员可以使用的类库....注意,它是MVC框架的一个组件(如STRUTS),也可以在模板中使用JSP标签.

    jsp自定义标签

    jsp,jstl,freemarker

    freemarker生成html

    几个jsp生成html事例,以及freemarker标签说明

    freemarker入门Demo

    1、不能编写java代码,可以实现严格的mvc分离 2、性能非常不错 3、对jsp标签支持良好 4、内置大量常用功能,使用非常方便 5、宏定义(类似jsp标签)非常方便 6、使用表达式语言

    freemarker总结

    其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替&gt;会有更好的效果,因为 FreeMarker会把&gt;解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:(x&gt;y)&gt; ...

    超完整FreeMarker中文教程,代码

    什么是FreeMarker? ................................................................................................. 7 我们应该阅读什么内容? .............................................................

    freemarker生成复杂word

    1、 首先用office【版本要2003以上,以下的不支持xml格式】编辑文档的样式,将需要动态填充的内容使用Freemarker标签替换:Word文档样式如下: 2、 将Word文档另存为XML格式,将后缀名“xml”修改为“ftl” 3、...

    Struts2 WebWork 2.0 Tags API 中文文档 [CHM]

    大多数的标签都可以用于所有的模板语言(参考 JSP Tags, Velocity Tags,和 FreeMarker Tags),但是有一些只能用于特定的模板语言。 无论什么时候一个标签不能完全的支持每一个模板, 该标签会在参考文档中注明。 ...

    Struts2 标签库

    Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。...包括最常用的jsp页面,也可以说Velocity和FreeMarker等模板技术中的使用

    javaWeb标签库大全API

    本手册收集了: 1、struts 1 各类型标签 ...6、jsp标签、语法 7、freemarker语法 8、velocity语法 9、ajax常用函数 10、常用js表单检测函数 11、常用js函数 12、多功能jsp编辑器(eclipse插件)

    struts2 标签

    Control,Data,Form,FreeMarker,JSP,Non,Form,Tag标签详解

    java web 标签大全

    Struts2 标签 Struts bean ...JSP标签/语法 Spring 标签 Spring 表单标签 freemarker语法 velocity 语法 JSF 核心标签 JSF 表单标签 AJAX 常用函数 JS 常用检测函数 JS 常用函数 JSP 编辑器(eclipse插件)

    struts2 学习例子

    3.Struts2标签使用前的准备: (1)在要使用标签的jsp页面引入标签库: (2)在web.xml中声明要使用的标签 这样是struts2 2.3.1.2版本的引入方式 &lt;filter-name&gt;struts2 &lt;filter-class&gt;org.apache....

    java web 标签大全.CHM

    struts 1 各类型标签 struts 2 标签 jstl 各类型标签 spring 标签 jsf标签 jsp标签、语法 freemarker语法 velocity语法 ajax常用函数 常用js表单检测函数 常用js函数

    java+web+标签大全.CHM

    本手册收集了: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 手册

    FreeMarker 手册 .......................................................................................................... 1 用于 FreeMarker 2.3.18 .......................................................

Global site tag (gtag.js) - Google Analytics