各位java前辈:1.在struts2中,在jsp页面是如何获取Action中值的?需要去理解源代码吗?

虽然知道一个大概,但是不知道具体是怎么实现的。也许是学习习惯的原因,感觉不理解用起来很不爽。... 虽然知道一个大概,但是不知道具体是怎么实现的。也许是学习习惯的原因,感觉不理解用起来很不爽。 展开
 我来答
Lee小店
推荐于2016-04-22 · TA获得超过1265个赞
知道小有建树答主
回答量:767
采纳率:0%
帮助的人:366万
展开全部
具体实现就是一系列的封装。struts是采用ognl模型,就是对象关系模型,想要得到action中的值,首先的一点这个值要有set和get方法,在你请求action的时候,会重新生成一个action对象--》调用set方法给这个属性赋值,在jsp上展示用的是get方法,例如你有一个属性name需要展示,set、get方法写好后,在你请求的action中给name赋值,页面就能拿到。struts是用session存储对象的。
页面上可以用EL表达式 ${name} java 代码 session。getparameter这样的方式都可以。
追问

前辈,您说的很细致,小弟还有一个问题想请教您,在Struts2的valueStack中有个root根对象,这个root根对象是不是随着我访问的对象而变。比如两个对象:、

 在valueStack的栈顶第一次存放的是foo对象,第二次存放的是foo1对象。这样理解对吗?感觉理解有点模糊。

追答
不是这样的,你在action中创建的对象是不会展示到jsp页面中的,要这样
public class Action{
private 类型 名称;
set 名字(){
}
get 名字(){
}

}
这样才会存在值栈中。
像你那么做是不行的,因为没有经过框架的set的过程,而是你自己创建的。
tyz_唐耀祖
2013-09-28 · 超过26用户采纳过TA的回答
知道答主
回答量:100
采纳率:100%
帮助的人:60.3万
展开全部
这个就跟以前sevlet接受参数一样的,你的页面发送请求(提交参数),struts2有拦截器,拦截你的请求,然后就会根据struts配置文件找到是哪个action来处理这个请求的,然后就会将参数传递到那个action中。大致流程就是这样的。如果要详细了解,你可以去看看相关拦截器的代码 。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
springlizhe2
2013-09-29
知道答主
回答量:11
采纳率:0%
帮助的人:3.6万
展开全部
不需要理解源代码 在action中 你把 从model中取得的值 放入到 struts2 值栈 中 页面利用ognl来进行 获取 或遍历 就好了 哈哈 很简单呢 给分吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
P斐
2013-09-28
知道答主
回答量:7
采纳率:0%
帮助的人:3.5万
展开全部
这种情况一般使用struts2的核心值栈,核心值栈里面存放的是action中所定义的可以访问到的对象或变量,当使用是一般会直接的这么用 #类名.属性名 即 #parameters.score
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
攀攀雄起
2013-09-28
知道答主
回答量:5
采纳率:0%
帮助的人:6450
展开全部
jsp页面开始写上<%@ taglib prefix="s" uri="/struts-tags"%>
再比如放入model中的属性username
<s:property value="username">就能得到值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式