分享

如何在JSP页面中使用FreeMarker标签和Struts2标签

 闪宁斯达 2011-06-08

Web.xml

view plaincopy to clipboardprint?

<filter> 

      <filter-name>struts-cleanup</filter-name> 

      <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> 

</filter> 

<filter> 

        <filter-name>sitemesh-freemarker</filter-name> 

        <filter-class>org.apache.struts2.sitemesh.FreeMarkerPageFilter</filter-class> 

        <init-param> 

            <param-name>default_encoding</param-name> 

            <param-value>UTF-8</param-value> 

       </init-param> 

</filter> 

<filter> 

      <filter-name>struts2</filter-name> 

      <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 

</filter> 

   <filter-mapping> 

      <filter-name>struts-cleanup</filter-name> 

      <url-pattern>/*</url-pattern> 

</filter-mapping> 

<filter-mapping> 

    <filter-name>sitemesh-freemarker</filter-name> 

    <url-pattern>/*</url-pattern> 

</filter-mapping> 

<filter-mapping> 

      <filter-name>struts2</filter-name> 

      <url-pattern>/*</url-pattern> 

</filter-mapping> 

<servlet> 

      <servlet-name>JspSupportServlet</servlet-name> 

      <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class> 

      <load-on-startup>1</load-on-startup> 

</servlet> 

<filter>

      <filter-name>struts-cleanup</filter-name>

      <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>

</filter>

<filter>

        <filter-name>sitemesh-freemarker</filter-name>

       <filter-class>org.apache.struts2.sitemesh.FreeMarkerPageFilter</filter-class>

        <init-param>

            <param-name>default_encoding</param-name>

            <param-value>UTF-8</param-value>

        </init-param>

</filter>

<filter>

      <filter-name>struts2</filter-name>

      <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

</filter>

   <filter-mapping>

      <filter-name>struts-cleanup</filter-name>

      <url-pattern>/*</url-pattern>

</filter-mapping>

<filter-mapping>

    <filter-name>sitemesh-freemarker</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

<filter-mapping>

      <filter-name>struts2</filter-name>

      <url-pattern>/*</url-pattern>

</filter-mapping>

<servlet>

      <servlet-name>JspSupportServlet</servlet-name>

      <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>

      <load-on-startup>1</load-on-startup>

</servlet> 

本文的重点是如何在JSP中使用FreeMarker标签,有人可能会问:为什么不直接在FreeMarker模版文件中使用JSP标签呢?这是个很好的问题,因为大部分人在使用FreeMarker多半是会用FreeMarker文件格式(.ftl但是,试想想如果我们只是想在现有的系统中集成FreeMarker如果我们要把所有JSP文件改成FTL文件,那么是需要很多时间的,在这种情况下,最好的办法就是在JSP中直接使用FreeMarker标签(一般情况下,我们很有可能在JSP中使用FreeMarker的宏)。那么如何在JSP中使用FreeMarker呢,很简单,我们必须使用JSP<%@ taglib ... />命令,把FreeMarker的标签库文件(fmtag.tld)导入,本文把 fmtag.tld 放到WEB-INF目录下,下面是 fmtag.tld 的源码:

hello.jsp

view plaincopy to clipboardprint?

<%@ taglib uri="/WEB-INF/fmtag.tld" prefix="fm" %> 

<html> 

    <head> 

        <title>Login</title> 

    </head> 

<body> 

      <h1>Hello World.</h1> 

      <fm:template> 

      <#assign y="Hello World"> 

      ${y}   

      <#assign seq = ["winter", "spring", "summer", "autumn"]> 

      <#list seq as x> 

      ${x_index + 1}. ${x}<#if x_has_next>,</#if> 

      </#list> 

       </fm:template> 

</body> 

</html> 

<%@ taglib uri="/WEB-INF/fmtag.tld" prefix="fm" %>

<html>

    <head>

        <title>Login</title>

    </head>

<body>

      <h1>Hello World.</h1>

      <fm:template>

      <#assign y="Hello World">

      ${y}

      <#assign seq = ["winter", "spring", "summer", "autumn"]>

      <#list seq as x>

      ${x_index + 1}. ${x}<#if x_has_next>,</#if>

      </#list>

       </fm:template>

</body>

</html> 

大家注意了FreeMarker的部分必须放在标签<fm:template></fm:template>之间,否则JSP不会解析FreeMarker的内容,会把源码输出在页面之中

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多