Freemarker变量赋值问题
<#macropagertotalPagecurPage=1showPageNum=10><#if(showPageNum>totalPage)><#assignshow...
<#macro pager totalPage curPage=1 showPageNum=10>
<#if (showPageNum > totalPage)>
<#assign showPageNum = totalPage-1><br/>
</#if>
${showPageNum}
</#macro>
如上代码在if语句成立情况下为什输出showPageNum时得到的结果为10而不是赋值后的结果?将assign中变量换成其他变量则可得到正确值。求解释,合理解释分数可适当提高。 展开
<#if (showPageNum > totalPage)>
<#assign showPageNum = totalPage-1><br/>
</#if>
${showPageNum}
</#macro>
如上代码在if语句成立情况下为什输出showPageNum时得到的结果为10而不是赋值后的结果?将assign中变量换成其他变量则可得到正确值。求解释,合理解释分数可适当提高。 展开
推荐于2017-11-25
展开全部
<#macro pager totalPage curPage=1 showPageNum=10>
<#if (showPageNum > totalPage)>
<#local showPageNum = totalPage-1><br/>
</#if>
${showPageNum}
</#macro>
解释: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
<#if (showPageNum > totalPage)>
<#local showPageNum = totalPage-1><br/>
</#if>
${showPageNum}
</#macro>
解释: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
追问
不好意思,前几天比较忙。在assign里面用一个新的变量时,在下面输出的是赋值后的值,但如果是用macro中传入的变量则输出的是未改变前的值。这应该和隐藏变量没有什么关系吧,因为assign变量是当前空间可见。
是否意味使用一次assign就是重新定义了一个新的变量,只是这个变量与传入变量名一致所以导致被隐藏?不知这样理解是否正确。
追答
可以这样理解
展开全部
不要用>,小于 大于 在freemarker里面都是用gt lt来表示的,正确的写法应该是
<#macro pager totalPage curPage=1 showPageNum=10>
<#if (showPageNum gt totalPage)>
<#assign showPageNum = totalPage-1><br/>
</#if>
${showPageNum}
</#macro>
<#macro pager totalPage curPage=1 showPageNum=10>
<#if (showPageNum gt totalPage)>
<#assign showPageNum = totalPage-1><br/>
</#if>
${showPageNum}
</#macro>
追问
感谢您的提醒,谢谢。楼下的回答相对要精确些,谢谢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询