OGNL调用有参数的静态方法 参数为静态属性 的问题

liu978978798798 2009-12-27 10:02:50
现有个PossibleValuesSet类
有静态属性和静态方法如下:

....
public static final String SEX = "Sex";
public static List<Object> getPossibleValuesSet(String key) {
Map possibleValuesSet = new HashMap<String, Set>(0);
List<String> sets = new ArrayList<String>(0);
sets.add("1");
sets.add("2");
possibleValuesSet.put(SEX, sets);
return possibleValuesSet.get(key);
}
....


在页面中迭代取值如下:

....
<select name="name">性别:
<s:iterator
value=
"<s:property
value='@com.biconcept.job.util.PossibleValuesSet@getPossibleValuesSet(
<s:property
value='@com.biconcept.job.util.PossibleValuesSet@SEX'
/>
)
'/>" status="stu" id="sex">
<option><s:property value="sex"/></option>
</s:iterator>
</select>
....


取不出来啊,不知道怎么弄,那位GS指点指点啊!

说明:单单
<s:property
value='@com.biconcept.job.util.PossibleValuesSet@SEX'
/>
可以打印出Sex
...全文
347 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu978978798798 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 joher1 的回复:]
引用 1 楼 xinlan1022 的回复:
一个标签嵌着一个标签好像不行的,你把 <s:property   
                        value='@com.biconcept.job.util.PossibleValuesSet@SEX' 
                  /> 
替换成Sex试试可以不?



换成这样的也不行。我又试了以下方式:
Java code<s:iterator value="<s:propertyvalue='@com.biconcept.job.util.PossibleValuesSet@getPossibleValuesSet1()'/>" status="stu" id="Sex">11<s:property value="Sex"/></s:iterator>
Java codepublicstatic List<Object> getPossibleValuesSet1() {return getPossibleValuesSet(SEX);
}
还是不行啊。而且我main()单独测试了getPossibleValuesSet1(),没有问题。
[/Quote]

不小心换了马甲,呵呵!
liu978978798798 2009-12-28
  • 打赏
  • 举报
回复
我狂晕!看来老了!头脑不灵活了,钻入牛角尖了!!!
应该是这么写:
<s:iterator value="@com.biconcept.job.util.PossibleValuesSet@getPossibleValuesSet(@com.biconcept.job.util.PossibleValuesSet@SEX)" status="stu" id="Nation">
<option><s:property value="Nation"/></option>
</s:iterator>
问题就能解决了!
我真是无语了!
Joher1 2009-12-28
  • 打赏
  • 举报
回复

1:<s:property
value='@com.biconcept.job.util.PossibleValuesSet@getPossibleValuesSet2()'/>
2:<s:iterator value="<s:property
value='@com.biconcept.job.util.PossibleValuesSet@getPossibleValuesSet1()'/>">
11
</s:iterator>


public static String getPossibleValuesSet2() {
return "OK!";
}

打印结果:
1:OK! 2:
静态方法也可以执行了。看来就是不能把标签嵌套在另一个标签的属性中的问题了,那我实现想要的功能,
岂不是要先定义一个变量存放参数:
var property = <s:property value='@com.biconcept.job.util.PossibleValuesSet@SEX' />
再定义一个变量存放返回值:
var returnValue = <s:property value=property/>" status="stu" id="Sex"/>
再用<s:iterator>循环输出:
<s:iterator value="returnValue" status="stu" id="Sex">
<s:property value="Sex"/>
</s:iterator>
当然,以上只是为了说明,调用不正确的。
或者是用OGNL来定义变量。
想想Struts也不会这么笨拙的吧?
Joher1 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 redlotus_lyn 的回复:]
用的是struts2哪个版本啊

设置以下属性:
struts.ognl.allowStaticMethodAccess = true
[/Quote]
2.1.6
已经设了,静态属性的已经可以调用了嘛,现在就是静态方法不能调用
Joher1 2009-12-28
  • 打赏
  • 举报
回复
不知道各位所说的标签嵌套不可以是什么情况,
但是,<s:iterator>确是可以嵌套的,
可以这样:

<s:iterator value="emails" status="stu">
+${emlId}+${emlName}+${emlDomainname}
<s:iterator value="personregiinfos" status="stu">
+${preiId}+${preiNickname}
</s:iterator>
</s:iterator>

参考:http://www.javaeye.com/problems/32551
redlotus_lyn 2009-12-28
  • 打赏
  • 举报
回复
用的是struts2哪个版本啊

设置以下属性:
struts.ognl.allowStaticMethodAccess = true
Joher1 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xinlan1022 的回复:]
一个标签嵌着一个标签好像不行的,你把 <s:property   
                        value='@com.biconcept.job.util.PossibleValuesSet@SEX' 
                  /> 
替换成Sex试试可以不?

[/Quote]

换成这样的也不行。我又试了以下方式:

<s:iterator value="<s:property
value='@com.biconcept.job.util.PossibleValuesSet@getPossibleValuesSet1()'/>" status="stu" id="Sex">
11<s:property value="Sex"/>
</s:iterator>


public static List<Object> getPossibleValuesSet1() {
return getPossibleValuesSet(SEX);
}

还是不行啊。而且我main()单独测试了getPossibleValuesSet1(),没有问题。
zl3450341 2009-12-28
  • 打赏
  • 举报
回复
<s:iterator    
value=
"<s:property
value='@com.biconcept.job.util.PossibleValuesSet@getPossibleValuesSet(
<s:property
value='@com.biconcept.job.util.PossibleValuesSet@SEX'
/>
)
'/>" status="stu" id="sex">

这样也可以?
crazylaa 2009-12-28
  • 打赏
  • 举报
回复
标签嵌套?长见识了,呵呵。
xinlan1022 2009-12-27
  • 打赏
  • 举报
回复
一个标签嵌着一个标签好像不行的,你把<s:property
value='@com.biconcept.job.util.PossibleValuesSet@SEX'
/>
替换成Sex试试可以不?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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