jFinal在页面取值是如何做到的?

陈江林 发布于 2013/05/31 09:12
阅读 3K+
收藏 0

@JFinal 你好,想跟你请教个问题:最近看到JFinal这个国人开发的框架,感觉很不错,简洁高效!在学习的过程中遇到一个无法理解的问题。

运行官方提供的dome,在blog.jsp页面用el表达式取值

<tr>
	<td style="text-align:left;"><c:out value="${blog.id}" default=""/></td>
	<td style="text-align:left;">${blog.title}</td>
	<td style="text-align:left;">
	&nbsp;&nbsp;<a href="/blog/delete/${blog.id}">删除</a>
	&nbsp;&nbsp;<a href="/blog/edit/${blog.id}">修改</a>
	</td>
</tr>

这里用${blog.id},${blog.title}取值,按照我的理解el表达式是取这个blog对象的属性值,当blog是个map时就取key为id或title的值,问题来了:我通过查看源码没有发现blog有id,title这些属性,blog是Mould的子类对象,Mould也不个map,Mould源码中

public abstract class Model<M extends Model> implements Serializable {
	
	private static final long serialVersionUID = -4890964905769110400L;
	
	/**
	 * Attributes of this model
	 */
	private Map<String, Object> attrs = DbKit.containerFactory.getAttrsMap();	// new HashMap<String, Object>();
	
	/**
	 * Flag of column has been modified. update need this flag
	 */
	private Set<String> modifyFlag;
	
	private static final TableInfoMapping tableInfoMapping = TableInfoMapping.me();
Mould不是个Map的实现类,我想知道,Jfinal是怎么取到值的?

加载中
0
soloj
soloj
在attrs中获取的
0
littleant
littleant
看来你的servlet还没学到位
陈江林
陈江林
请正面回答好吗?
0
littleant
littleant

1.jsp中可以用el,所以我想你肯定不是问题的怎么解析值的问题,而是从哪里拿到的值

2.jfinal就是的建立的servlet上的工具类,他所有的机制都是要servlet支持的,servlet就4个作用域,在这4个中他肯定只会用request和page

3.解析视图,如果是走servlet->jsp流程,那可能是request,如果是servlet->freemark之类的模板引擎,那就是直接调用模板接口直接传值进去得到完整html输出即可

我没研究过jfinal,但是这些东西变来变去就这些名堂

0
JFinal
JFinal
    JspRender 是做了处理,将所有通过 setAttr(...)置入的对象封装在了一个 map中,所以很方便读取,当然你也可以改变这种行为,可以通过 JspRender.setSupportActiveRecord(false)关闭这个行为
返回顶部
顶部