struts2中,<s:.../>标签#号问题
我正在学习STRUTS2里面里的OGNL语言里的#我遇到了问题,请大家帮忙说一下,我现在没有分了,不能给大家,非常感谢STRUTS2里面,有stackcontext与va...
我正在学习STRUTS2里面里的OGNL语言里的#我遇到了问题,请大家帮忙说一下,我现在没有分了,不能给大家,非常感谢
STRUTS2 里面,有stack context与valuestack,访问valuestack时,我们可是不用#号,访问stack context我们要用#号,在JSP里面我们用<s:.../>标签的时候什么情况下,标签里的东东放到了valuestack又在什么情况下,放到了stack context,请大家说一下 展开
STRUTS2 里面,有stack context与valuestack,访问valuestack时,我们可是不用#号,访问stack context我们要用#号,在JSP里面我们用<s:.../>标签的时候什么情况下,标签里的东东放到了valuestack又在什么情况下,放到了stack context,请大家说一下 展开
3个回答
展开全部
我说一下我的理解
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里的,当然人为也可能让它们都指同一个东西。
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里的,当然人为也可能让它们都指同一个东西。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询