集成Velocity

优质
小牛编辑
130浏览
2023-12-01

手动下载地址: https://jfrog.nutz.cn/artifactory/jcenter/org/nutz/nutz-plugins-views/

maven项目的依赖项,中央库有.

    <dependency>
        <groupId>org.nutz</groupId>
        <artifactId>nutz-plugins-views</artifactId>
        <version>1.r.60</version>
    </dependency>

maven引用velocity相关jar包

    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity</artifactId>
        <version>1.7</version>
    </dependency>
    <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-tools</artifactId>
            <version>2.0</version>
    </dependency>

修改MainModule类,添加引用

@Views(value={VelocityViewMaker.class})
// 其他配置,如IocBy等等
public class MainModule {}

在classpath下添加velocity.properties

#资源加载器或加载器别名
resource.loader = webapp
#资源加载器类全限定名
webapp.resource.loader.class = org.apache.velocity.tools.view.WebappResourceLoader
#资源位置
webapp.resource.loader.path=/WEB-INF/
#编码
input.encoding=UTF-8
output.encoding=UTF-8
#布局文件为准
tools.view.servlet.layout.directory = layout/
#默认布局文件名称
tools.view.servlet.layout.default.template =default.html
#默认错误文件名称
tools.view.servlet.error.template =Error.vm
tools.view.servlet.layout.default.template =Default.vm

web.xml配置

<init-param>
    <param-name>org.apache.velocity.properties</param-name><!-- 这个不能修改-->
    <param-value>velocity.properties</param-value> <!-- 对应上一步中配置文件的位置 -->
</init-param>

使用方法

User类

public class User {
    public int roleId;
    public String userName;

public int getRoleId() {
    return roleId;
}

public void setRoleId(int roleId) {
    this.roleId = roleId;
}

public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}
}

MVC类

@At("/")
@Ok("vm:/tmpl/main.vm")
public User main() {
    User user = new User();
    user.setUserName("nutz");
    user.setRoleId(0);
    return user;
}

main.vm文件

#if($!{obj.roleId} == 0)
<li> 管理员 $!{obj.userName}</li>
#else
<li> 编辑 $!{obj.userName}</li>
#end

更灵活的使用方法

MVC类

@At("/")
@Ok("vm:/tmpl/main.vm")
public NutMap main() {
    NutMap map = new NutMap();
    map.put("site_name", "Nutz工具箱");
    User user = new User();
    user.setRoleId(0);
    user.setUserName("nutz");
    map.put("user", user);
    return map;
}

main.vm文件

<span> 站点名称:$!{obj.site_name}</span>
#if($!{obj.user.roleId} == 0)
<li> 管理员 $!{obj.user.userName}</li>
#else
<li> 编辑 $!{obj.user.userName}</li>
#end

可供参考的实例项目

https://github.com/Wizzercn/NutzWk