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中变量换成其他变量则可得到正确值。求解释,合理解释分数可适当提高。
展开
 我来答
匿名用户
推荐于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
追问
不好意思,前几天比较忙。在assign里面用一个新的变量时,在下面输出的是赋值后的值,但如果是用macro中传入的变量则输出的是未改变前的值。这应该和隐藏变量没有什么关系吧,因为assign变量是当前空间可见。
是否意味使用一次assign就是重新定义了一个新的变量,只是这个变量与传入变量名一致所以导致被隐藏?不知这样理解是否正确。
追答
可以这样理解
百度网友f1f628b7e
2013-05-29 · TA获得超过5062个赞
知道大有可为答主
回答量:1870
采纳率:100%
帮助的人:1954万
展开全部
不要用>,小于 大于 在freemarker里面都是用gt lt来表示的,正确的写法应该是

<#macro pager totalPage curPage=1 showPageNum=10>
<#if (showPageNum gt totalPage)>
<#assign showPageNum = totalPage-1><br/>
</#if>
${showPageNum}
</#macro>
追问
感谢您的提醒,谢谢。楼下的回答相对要精确些,谢谢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式