Struts2.0 静态访问无效

gthacker 2010-05-18 05:04:22
页面

<s:property value="@com.gt.gtnews.util.Tools@formatDate(#request.cdate)"/>

没任何输出


<s:property value="#request.cdate"/>

可以输出

com.gt.gtnews.util.Tools.java这个类确定没问题的 但就是访问不到 不知道为什么
这个也配了 但无效
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>



<s:property value="@java.lang.Math@PI"/>
也可以正常输出


貌似就是找不到包路径






package com.gt.gtnews.util;

public class Test {
public static String PI = "123456123456";
}


<s:property value="@com.gt.gtnews.util.Test@PI"/> 也不显示 郁闷啊 快来救我啊

...全文
94 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
redlotus_lyn 2010-05-19
  • 打赏
  • 举报
回复
QQ:75425364
redlotus_lyn 2010-05-19
  • 打赏
  • 举报
回复
顺便问下 加不加#request. 有什么区别吗 怎么两种都可以访问到

对以上进行解释:

cdate属性在Action中肯定有get/set方法。在请求的时候struts2会创建ActionContext,struts2拦截器会把值放到request和valueStack中

<s:property value="#reqeust.cdate"> -->是从request中取值。
<s:property value="cdate"> -->是从valueStack中取值。
xuhesheng 2010-05-19
  • 打赏
  • 举报
回复
#request表示限定了寻找的范围
不加的话表示在四个内置对象中都寻找

使用这些的时候
你需要持有该属性对应的setget方法才行
你那个Test类里就没有getset方法
你那种S标签必须要有getset方法才可以使用

标签一般都是这样使用的

至于为什么#request.XXX可以使用
是因为你当时肯定用了request.setAttribute("XXXX","YYY");
要不然你也取不到的
xuhesheng 2010-05-19
  • 打赏
  • 举报
回复
#request表示限定了寻找的范围
不加的话表示在四个内置对象中都寻找

使用这些的时候
你需要持有该属性对应的setget方法才行
你那个Test类里就没有getset方法
你那种S标签必须要有getset方法才可以使用

标签一般都是这样使用的

至于为什么#request.XXX可以使用
是因为你当时肯定用了request.setAttribute("XXXX","YYY");
要不然你也取不到的
gthacker 2010-05-19
  • 打赏
  • 举报
回复
很郁闷 这帖子竟然没人顶
yinbingyu000000 2010-05-19
  • 打赏
  • 举报
回复
用<s:debug/>看一下stack里的内容
gthacker 2010-05-18
  • 打赏
  • 举报
回复
顺便问下 加不加#request. 有什么区别吗 怎么两种都可以访问到 请大家指点下我
gthacker 2010-05-18
  • 打赏
  • 举报
回复
<s:property value="cdate"/> 可以正常输出

但要把输出做处理 就不行了
2010-05-18
  • 打赏
  • 举报
回复
静态访问?

你把它定义成Action里属性
想输出 直接 <s:property value="cdate"/>
不用加#或者 request

67,513

社区成员

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

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