struts2中,<s:.../>标签#号问题

我正在学习STRUTS2里面里的OGNL语言里的#我遇到了问题,请大家帮忙说一下,我现在没有分了,不能给大家,非常感谢STRUTS2里面,有stackcontext与va... 我正在学习STRUTS2里面里的OGNL语言里的#我遇到了问题,请大家帮忙说一下,我现在没有分了,不能给大家,非常感谢
STRUTS2 里面,有stack context与valuestack,访问valuestack时,我们可是不用#号,访问stack context我们要用#号,在JSP里面我们用<s:.../>标签的时候什么情况下,标签里的东东放到了valuestack又在什么情况下,放到了stack context,请大家说一下
展开
 我来答
23746021
2010-02-03 · TA获得超过1467个赞
知道小有建树答主
回答量:384
采纳率:0%
帮助的人:399万
展开全部
我说一下我的理解

request里的东西,都同时也放在了valueStack的顶层。

以前是request、response、context等这些是基本默认对象作为根值对象,在栈的顶层,你可以直接调用,比如request.什么什么。

现在Sturts2,顶层换了。比如你的request里先前存了一个叫name的变量,那么OGNL中,你这样就可以:
<s:什么什么... %{name} ... /> 这样就取到值了。
如果是普通HTML标签,这样:
<input 什么什么... ${name} ... /> 这样取值。
我觉得它俩反过来就不好用,也不知道是不是我配置的问题。

那么假如你需要用request或response了,实际上调用:
ServletActionContext.getRequest();或
ServletActionContext.getResponse();
现在OGNL用井号#代替了上面,即#request就可以取到了。

又比如你自己<s:bean什么什么>一个对象addr出来,那么这个对象跟默认的那几个对象,即request、response等等是在一个层次上的,对于以前的jsp,是可以直接调用到的,但Struts2不行了。所以:
#addr

%{addr}或${addr}
是两个东西,后者是request里的,当然人为也可能让它们都指同一个东西。
痛快还美妙的小抹香鲸3
2010-02-05 · TA获得超过272个赞
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:116万
展开全部
用debug去看看就可以了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
citymoon2000
2010-02-06 · TA获得超过213个赞
知道答主
回答量:112
采纳率:0%
帮助的人:75.7万
展开全部
<S:>标签很强大!
<S:property value>是获取值栈里的值并显示
从值栈里取值不用#, 从request, 或变量里取值要用#
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式