Freemarker变量赋值问题

2024-12-05 13:32:18
推荐回答(2个)
回答1:

<#macro pager totalPage curPage=1 showPageNum=10>
<#if (showPageNum > totalPage)>
<#local showPageNum = totalPage-1>


${showPageNum}


解释:global、assign、local(macro参数)、list(由list创建的循环变量如:<#list a as x>)关系
global 全局变量,在所有命名空间可见
assign 当前命名空间可见
local(macro参数) 局部变量,当前宏内可见
循环变量(<#list a as x>) 当前循环可见
他们之间的关系 循环变量会隐藏局部变量(local创建的或macro参数)
局部变量(local创建的或macro参数)会隐藏assign(创建的变量)
assign(创建的变量)会隐藏global

回答2:

不要用>,小于 大于 在freemarker里面都是用gt lt来表示的,正确的写法应该是

<#macro pager totalPage curPage=1 showPageNum=10>
<#if (showPageNum gt totalPage)>
<#assign showPageNum = totalPage-1>


${showPageNum}