freemarker 用法总结

freemarker 模板引擎解析对象

${user.userName!"默认值"}

freemarker 模板引擎取 Session 中取值

${Session.user.userName!"default value"}

freemarker 模板引擎遍历 list

<#if userLists?exists>
   <#list userLists as leaveobj>
	  <tr>
		 <td class="text-center">${leaveobj_index+1}</td>
		 <td class="text-center">${leaveobj.userName!"设置默认值"}</td>
		 <td class="text-center">${leaveobj.userAge!"设置默认值"}</td>
	  </tr>     
   </#list>
</#if>

注意:无论是解析对象,还是遍历 list,都要设置默认值(即该值为空时的值),否则 freemarker 会报 The following has evaluated to null or missing 的错

 

以下以一个小 demo 为例,测试以上代码

项目框架使用 springboot

实体类

package com.freemark.bean;

public class User {
	
	private String userName;
	
	private Integer userAge;

	public String getUserName() {
		return userName;
	}

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

	public Integer getUserAge() {
		return userAge;
	}

	public void setUserAge(Integer userAge) {
		this.userAge = userAge;
	}
}

controller 层

package com.freemark.controller;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.freemark.bean.User;

@Controller
@RequestMapping("/freem")
public class DemoController {
	
	/**
	 * 返回对象
	 * @return
	 */
	@RequestMapping("/user")
	public ModelAndView getUser(HttpSession session) {
		ModelAndView mav = new ModelAndView();
		
		User user = new User();
		user.setUserName("楚庄王");
		//user.setUserAge(25);
		
		session.setAttribute("user", user); // session中存值
		
		mav.addObject("user", user);
		mav.setViewName("user");
		return mav;
	}

	/**
	 * 返回 list
	 * @return
	 */
	@RequestMapping("/user/list")
	public ModelAndView getUserList() {
		ModelAndView mav = new ModelAndView();
		
		List<User> list = new ArrayList<User>();
		
		User user1 = new User();
		user1.setUserName("楚庄王");
		user1.setUserAge(25);
		list.add(user1);
		
		User user2 = new User();
		user2.setUserName("齐桓公");
		user2.setUserAge(18);
		list.add(user2);
		
		User user3 = new User();
		user3.setUserName("晋文公");
		user3.setUserAge(60);
		list.add(user3);
		
		User user4 = new User();
		user4.setUserName("秦穆公");
		user4.setUserAge(55);
		list.add(user4);
		
		User user5 = new User();
		user5.setUserName("吴王阖闾");
		user5.setUserAge(27);
		list.add(user5);
		
		mav.addObject("userLists", list);
		mav.setViewName("userList");
		return mav;
	}
}

user.ftl 页面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>freemarker解析对象</title>
</head>
<body>

     session中取值 ${Session.user.userName!"default value"}
      <br>
     ${user.userName!"默认值"}
     ${user.userAge!"30"}
</body>
</html>

userList.ftl 页面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>freemarker遍历list</title>
</head>
<body>
	<table border="1">
		<tr>
		  <td  class="text-center"><strong>序号</strong></td>
		  <td  class="text-center"><strong>用户名</strong></td>
		  <td  class="text-center"><strong>年龄</strong></td>
		</tr>
		<#if userLists?exists>
		  <#list userLists as leaveobj>
		    <tr>
		        <td class="text-center">${leaveobj_index+1}</td>
		        <td class="text-center">${leaveobj.userName!"设置默认值"}</td>
		        <td class="text-center">${leaveobj.userAge!"设置默认值"}</td>
		    </tr>     
		  </#list>
		</#if>
     </table>
</body>
</html>

注意: ${leaveobj_index+1} 为 freemarker 模板自带的序号自增, +1 为从 1 开始;${leaveobj_index} 为从 0 开始

测试

访问 http://localhost:8080/freem/user

访问 http://localhost:8080/freem/user/list

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟世君子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值