NutzBook - 集成模板引擎

NutzBook - 集成模板引擎

Tags: Nutz

摘要

NutzBook - 集成模板引擎

集成jetbrick-template-2x

添加jar

        <!-- http://mvnrepository.com/artifact/com.github.subchen/jetbrick-template-nutz -->
        <dependency>
            <groupId>com.github.subchen</groupId>
            <artifactId>jetbrick-template-nutz</artifactId>
            <version>2.0.10</version>
        </dependency>

resource下创建jetbrick-template.properties

jetx.template.loaders = $loader

$loader = jetbrick.template.loader.ServletResourceLoader
$loader.root = /WEB-INF/templates/jetx
$loader.reloadable = true

打开MainModule类, 添加一个注解,即可关联jetbrick-template.

@Views({JetTemplateViewMaker.class})

然后我们新建一个模板 webapp/WEB-INF/templates/jetx/hello.jetx, 内容如下

<table>
  <tr>
    <td>序号</td>
    <td>姓名</td>
    <td>邮箱</td>
  </tr>
  #for (user : obj.list)
  <tr>
    <td>${for.index}</td>
    <td>${user.nickname}</td>
    <td>${user.email}</td>
  </tr>
  #end
</table>

然后新建一个模块叫JetTemplateModule, 用于测试

package net.javablog.module;


import net.javablog.bean.UserProfile;
import org.nutz.dao.QueryResult;
import org.nutz.dao.pager.Pager;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;

@IocBean
@At("/jetx")
public class JetTemplateModule extends BaseModule {

    @At
    @Ok("jetx:hello.jetx")
    public Object hello() {
        QueryResult qr = new QueryResult();
        Pager pager = dao.createPager(1, 20);
        pager.setRecordCount(dao.count(UserProfile.class));
        qr.setPager(pager);
        qr.setList(dao.query(UserProfile.class, null, pager));
        return qr;
    }
}

启动项目,访问 http://127.0.0.1:8080/jetx/hello 即可看看效果

集成beetl

集成beetl跟集成jetbrick-template-2x非常类似,但是目前测试不可两个一起用。集成beetl时要先注释掉上面的jetbrick-template-2x各个地方的引用。

准备jar

        <!-- http://mvnrepository.com/artifact/com.ibeetl/beetl -->
        <dependency>
        <groupId>com.ibeetl</groupId>
        <artifactId>beetl</artifactId>
        <version>2.4.0</version>
        </dependency>

在MainModule声明@Views,引入BeetlViewMaker

@Views({BeetlViewMaker.class})

在resources目录beetl.properties下添加配置文件

RESOURCE_LOADER=org.beetl.core.resource.WebAppResourceLoader
#ERROR_HANDLER=net.wendal.nutzbook.beetl.LogErrorHandler
RESOURCE.root=/WEB-INF/templates/beetl

在目录 webapp/WEB-INF/templates/beetl 下添加一个模板, hello.html

总共 ${obj.list.~size}
<%
for(user in obj.list){
%>
hello,${user.nickname};


<%}%>

当前页${obj.pager.pageNumber},总共${obj.pager.pageCount}页

新建个BeetlTemplateModule类

package net.javablog.module;

import net.javablog.bean.UserProfile;
import org.nutz.dao.QueryResult;
import org.nutz.dao.pager.Pager;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Fail;
import org.nutz.mvc.annotation.Ok;

@IocBean
@At("/beetl")
public class BeetlTemplateModule extends BaseModule {

    @At
    @Ok("beetl:hello.html")
    @Fail("void") // beelt的机制导致只能使用void,详细原因看nutzbook中的代码吧
    public Object hello() {
        QueryResult qr = new QueryResult();
        Pager pager = dao.createPager(1, 20);
        pager.setRecordCount(dao.count(UserProfile.class));
        qr.setPager(pager);
        qr.setList(dao.query(UserProfile.class, null, pager));
        return qr;
    }

}

beetl查看效果

重启jetty ,访问 http://127.0.0.1:8080/beetl/hello