struts2中set标签中@的用法

sean1203 2010-05-26 03:06:12
<s:set name="student" value="@com.abc.StudentFactory@getStudent(#id)"></s:set>
为什么struts2标签中的set可以这样用@来调用方法,而且只能是静态方法,而且只能调用一次
<s:set name="student" value="@com.abc.StudentFactory@getStudent(#id)@getName()"></s:set>
这样不行的
这属性的student能用<%%>获得进行处理吗?
...全文
327 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sean1203 2010-05-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 izard999 的回复:]

是可以的.!
你<s:set>的时候加一个属性var="stu"; 那么这个叫stu的变量会被存到OGNL Context中(就是一个Map).
刚才上面的<%%>的代码
ActionContext.getContext().getContextMap().get("stu");可以拿到你想要的值
ContextMap 就是OGNL Context了.!
[/Quote]
ActionContext.getContext().getContextMap().get("stu");这句放到<%%>中有点错误,好像ActionContext找不到?
izard999 2010-05-26
  • 打赏
  • 举报
回复
name和id属性都过时了.. 用var存
izard999 2010-05-26
  • 打赏
  • 举报
回复
是可以的.!
你<s:set>的时候加一个属性var="stu"; 那么这个叫stu的变量会被存到OGNL Context中(就是一个Map).
刚才上面的<%%>的代码
ActionContext.getContext().getContextMap().get("stu");可以拿到你想要的值
ContextMap 就是OGNL Context了.!
sean1203 2010-05-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 izard999 的回复:]

@调用静态方法这个是OGNL表达式就是有这种功能, 想知道为什么那应该去问问设计OGNL的人吧.!
至于不能连续调用的这个问题, 你自己想一下, 你第一次调用的返回结果是什么.?是个对象吧.? 那么OGNL表达式支持方法调用(静态非静态都可以), 你第一次返回值了以后, 返回一个Stu对象,那么stu.name或者stu.getName()不就可以完成你想要的.?
[/Quote]

还有个
这属性的student能用<%%>获得进行处理吗?
获得的student想放入<%%>中进行处理。。。
就是标签中的对象怎么能放入页面代码中进行处理
izard999 2010-05-26
  • 打赏
  • 举报
回复
你要用<%%>处理时可以的, 默认是存到OGNL Context去的
<%
ActionContext.getContext().getContextMap.get(key);
%>
izard999 2010-05-26
  • 打赏
  • 举报
回复
@调用静态方法这个是OGNL表达式就是有这种功能, 想知道为什么那应该去问问设计OGNL的人吧.!
至于不能连续调用的这个问题, 你自己想一下, 你第一次调用的返回结果是什么.?是个对象吧.? 那么OGNL表达式支持方法调用(静态非静态都可以), 你第一次返回值了以后, 返回一个Stu对象,那么stu.name或者stu.getName()不就可以完成你想要的.?
wj63558595 2010-05-26
  • 打赏
  • 举报
回复
这属性的student能用<%%>获得进行处理吗?

这个是肯定可以的
还可以试着使用el标签比较方便

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧