如何在<%%>中调用后台非静态方法

aqurda_allen 发布于 2014/11/10 15:22
阅读 938
收藏 1

@闲.大赋 你好,想跟你请教个问题:

见图

beetl版本为2.0.13

加载中
0
闲大赋
闲大赋

非静态方法跟静态方法一样,用@,后面按照java习惯来写,

所以你这个是正确的,出了什么问题嘛?,另外,我建议你用下面这个表情简洁

for(item in page.list!){
}elsefor{
}




a
aqurda_allen
我截了一张图,异常报的是, com.jfinal.render.RenderException: NATIVE_CALL_INVALID
0
闲大赋
闲大赋
这个_var是什么,会不会不是你预期的类,或者只是一个内部类,以至于beetl无法访问?
a
aqurda_allen
for循环里的临时变量,红框框出的那个
0
闲大赋
闲大赋
此错误是说找不到该方法,你可以debug一下:

debug(_var),看看_var是什么类?

a
aqurda_allen
是一个jfinal 的model类,model类里有个自建的方法 isType4Company()。 <td>${_var.account}</td> <td>${_var.uname}</td> <td>${_var.name}</td> 都是可以正常显示出来的,只是在调用到isType4Company()时抛了异常,我截下图
0
a
aqurda_allen
user里的方法


0
闲大赋
闲大赋
既然这是个标准的 getter,你先用${user.type4Comany}应急看看,我得搭建一个最新版jfinal环境试试了
0
闲大赋
闲大赋
用的beetl和jfinal是什么版本?
a
aqurda_allen
beetl是2.0.13 jfinal是1.9
0
闲大赋
闲大赋

@aqurda_allen

我用了最新版本,发现可以调用啊


package com.demo.blog;

import com.jfinal.plugin.activerecord.Model;

public class KgModel<M extends KgModel<M>> extends Model<M>{

}



@SuppressWarnings("serial")
public class Blog extends KgModel<Blog> {
	public static final Blog dao = new Blog();
	
	public boolean isType4Ok(){
		return true;
	}
}



然后我在模板里blog.html里调用:

<%for(_x in list){ %>
			<tr>
				<td style="text-align:left;"></td>
				<td style="text-align:left;">${@_x.isType4Ok()}</td>
				<td style="text-align:left;">
					&nbsp;&nbsp;<a href="/blog/delete/${_x.id}">删除</a>
					&nbsp;&nbsp;<a href="/blog/edit/${_x.id}">修改</a>
				</td>
			</tr>
			<%}%>



以上调用符合语气

我是哪弄错了嘛? 到beetl群交流一下 219324263

a
aqurda_allen
我找到问题在哪了。问题还是出在_var上,我犯了错,谢谢beetl作者闲.大赋的热情解答。
a
aqurda_allen
啊噢,我是在<%%>中调用的方法。而不是在{}中,标题里和截图里已经注明了。
返回顶部
顶部