struts2中,<s:.../>标签#号问题
答案:3 悬赏:10 手机版
解决时间 2021-04-03 14:02
- 提问者网友:山高云阔
- 2021-04-03 00:23
struts2中,<s:.../>标签#号问题
最佳答案
- 五星知识达人网友:夜余生
- 2021-04-03 01:00
我说一下我的理解
request里的东西,都同时也放在了valueStack的顶层。
以前是request、response、context等这些是基本默认对象作为根值对象,在栈的顶层,你可以直接调用,比如request.什么什么。
现在Sturts2,顶层换了。比如你的request里先前存了一个叫name的变量,那么OGNL中,你这样就可以:
这样就取到值了。
如果是普通HTML标签,这样:
这样取值。
我觉得它俩反过来就不好用,也不知道是不是我配置的问题。
那么假如你需要用request或response了,实际上调用:
ServletActionContext.getRequest();或
ServletActionContext.getResponse();
现在OGNL用井号#代替了上面,即#request就可以取到了。
又比如你自己一个对象addr出来,那么这个对象跟默认的那几个对象,即request、response等等是在一个层次上的,对于以前的jsp,是可以直接调用到的,但Struts2不行了。所以:
#addr
与
%{addr}或${addr}
是两个东西,后者是request里的,当然人为也可能让它们都指同一个东西。
request里的东西,都同时也放在了valueStack的顶层。
以前是request、response、context等这些是基本默认对象作为根值对象,在栈的顶层,你可以直接调用,比如request.什么什么。
现在Sturts2,顶层换了。比如你的request里先前存了一个叫name的变量,那么OGNL中,你这样就可以:
如果是普通HTML标签,这样:
这样取值。
我觉得它俩反过来就不好用,也不知道是不是我配置的问题。
那么假如你需要用request或response了,实际上调用:
ServletActionContext.getRequest();或
ServletActionContext.getResponse();
现在OGNL用井号#代替了上面,即#request就可以取到了。
又比如你自己
#addr
与
%{addr}或${addr}
是两个东西,后者是request里的,当然人为也可能让它们都指同一个东西。
全部回答
- 1楼网友:怙棘
- 2021-04-03 01:27
从值栈里取值不用#, 从request, 或变量里取值要用#
- 2楼网友:末日狂欢
- 2021-04-03 01:13
用debug去看看就可以了.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯