Jfinal结合Freemarker渲染界面

1.介绍

Jfinal默认render视图模式为Freemarker,如果想使用jsp视图,则需要设置

 

这样render时就是jsp视图。否则为Freemarker

    现在项目中的页面初始化数据都是用ajax请求数据,这样的模式不好,不但会把后台接口暴露出去,而且页面用户体验差。因此引入Freemarker模版引擎,后台初始化数据。以后项目页面必须使用这种模式,除非特殊情况。

2.开始使用

    使用Freemarker需要用到包,将该jar引入到项目中去,即可开始开发。需要创建Controller action,然后在action中获取所有页面需要的数据。然后renderFreeMarker方法,完成视图渲染。代码:

try {

    this.setCookie("name", URLEncoder.encode("5555","utf-8"),84000);

    //设置数据

    this.setAttr("username", "fwefwefw");

    //设置cookie

    this.setAttr("cookies", this.getCookie("name"));

    //设置列表数据

    List<String>  list = new ArrayList<String>();

    list.add("列表1");

    list.add("列表2");

    list.add("列表3");

    list.add("列表4");

    list.add("列表5");

    this.setAttr("testlist",list );

       Map<String,List<String>> kindsMap = new      HashMap<String,List<String>>();

    List<String> aList = new ArrayList<String>();

    aList.add("a1");

    aList.add("a2");

     List<String> bList = new ArrayList<String>();

     bList.add("b1");

     bList.add("b2");

     kindsMap.put("a",aList);

     kindsMap.put("b", bList);

       this.renderFreeMarker("/index.html");

        } catch (UnsupportedEncodingException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

接着页面开始取值,代码:

<body>

<!--判断是否为null -->

<#if cookies ??>

<!--取值 -->

<h>${cookies }</h>

</#if>

        <div>你的名字:${username}</div>

        <div>你设置cookie值:</div>

<#if testlist ??>

<h>列表大小:${testlist.size() }</h>

<br>

<!--遍历list-->

<#list testlist as info>

<a>${info}</a> 

</#list>

</#if>

<h1> Map例子</h1>

<#if kindsMap ?? && kindsMap.size() gt 0>

<#list kindsMap.keySet() as mKey>

    <h1>key:${mKey}</h1>

<!-- 定义变量 -->

    <#assign item = kindsMap[mKey]>   

     <#list item as itemValue>

         <h1>list value:${itemValue}</h1>

     </#list>

   </#list>

   </#if>

</body>

相关网址:http://demojava.iteye.com/blog/800204

3.其他

Controller类需要分模块,按模块指定访问路径,例如:

 

this.renderFreeMarker("/index.html");//绝对根目录

this.renderFreeMarker("index.html");//相对路径  会请求/user/index.html页面

前台文件需要分模块,按模块建目录,与Controller路径对应起来。

 

 

使用这个解决动态资源路径问题。html页面使用Freemarker取值:

<script type="text/javascript" src="${contextPath}/js/jquery.js"></script>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值