Struts2的值栈问题
struts2吧
全部回复
仅看楼主
level 2
  在学习Struts2的时候,我知道Action对象本身会被压入值栈,而我们在jsp页面中可以像访问自己的属性一样直接访问Action的字段.例如:Action对象中有一个User对象.那么我们就可以在jsp中直接访问<s:property value="user.name"></s:property>.
问题来了,当我们实现ModelDrivern的时候,我们知道如果我们getModel返回的对象不是null,那么返回的对象就会入栈.
假如我返回的是一个employee对象,那么employee就会被压入值栈,假如说employee有一个name属性,那么我是不是可以直接通过<s:property value="name"></s:property>来访问这个name属性呢? 有没有大手子给解答一下
2018年01月10日 03点01分 1
level 3
你去看看osgl
2018年01月25日 14点01分 2
ognl还是osgi?
2018年01月26日 09点01分
level 1
楼主,可以拜托你看一下我的帖子吗,遇到问题,很简单的,但是没人帮忙
2018年02月10日 13点02分 3
level 1
可以。有两种方法公开模型对象的数据域,一种是通过JavaBean属性公开,另一种就是通过ModelDriven的getModel()方法公开。通过javabean公开又分为两种情况,一种是通过属性公开,而另一种是通过公开一个对象。举例来说:比如设置一个User对象,前一种就是公开username和password等字段和对应的getter和setter方法,在动作内部创建一个User对象,并调用相应的getter和setter方法来设置相应的属性,这种方式在User对象压入Valuestack后,可以直接通过<s:property value="username"/>访问;而第二种情况由于公开的是一个已经设置好的User对象,虽有在值栈上只有user属性,所有比如在访问username属性的时候只能通过<s:property value="user.username"/>访问。通过ModelDriven的getModel ()方法公开领域模型的方式可以直接在ValueStack上访问领域模型对象的属性。比如通过ModelDriven的getModel()方法公开了user对象,可以通过<s:property value="username"/>访问user的username属性。这也是通过ModelDriven动作和JavaBean公开属性方式的不同点之一,JavaBean在值栈中访问公开user对象的属性会招致一个深度上轻微的惩罚。
2018年03月21日 07点03分 4
level 1
2018年04月02日 02点04分 5
level 1
2018年04月02日 02点04分 6
1