如何解决<s:property value=" s"> 这个value赋值为变量s 的问题?

vitou 发布于 2012/05/22 15:08
阅读 6K+
收藏 0

我现在碰到一个问题  我要遍历manageNodes对象 是List<manageNode>集合 其中manageNode中包含属性 name ,exName。  有个一对象element,其属性 就是不同的exName的值 如下cardNumber ,acount等等 有大量的属性 。如下:

name     :exName

充值卡号: cardNumber

充值账号: account

充值金额: cash

充值时间: time

购卡地点: location

我做出的效果         

<s:iterator value="manageNodes" status="ap">
   <td nowrap><s:property value="name"/>:</td><td>
<s:property value="element.<s:property value='exName'/> "/>    

   </td>    

</s:iterator>          

但是 因为<s:property value="element.<s:property value='exName'/> "/>   中的value值是字符串“element.<s:property value='exName'/> ” 而非 我希望的 如:element.location

后来想用value中用变量赋值 <s:set name="s" value="element.<s:property value='exName'/> "> 其 value 还是不能赋值给s

请大家帮个忙,解决下!!

加载中
0
JqbR001
JqbR001

引用来自“jqbmaster”的答案

//<s:set name="s" value="element.${exName}"/> 试试EL行不行

/*

<c:forEach  items="${manageNodes }" var="manageNode" varStatus="status">
${manageNode.name }
${manageNode.exName }
<c:set value="${manageNode.exName }" var="exName" scope="page"></c:set>
${element[exName]}<br>
</c:forEach>
100%没问题  自己再想想是不是可以换一种 数据结构呢 我都晕了

*/

vitou
vitou
结贴 谢谢帮忙啊!!
0
vitou
vitou

自己顶下人气!

0
iSea
iSea

貌似用map的key,value可以解决:

比如:element[<s:property value='exName'/>]

vitou
vitou
行,我试试 ,但是感觉把list弄成map 有点弄复杂了
0
vitou
vitou

测试显示,不行 效果和我写的是一样的

0
樂
element用MAP是最好的选择,直接通过键取不是更好?
vitou
vitou
回复 @樂 : 只是一个需要展现的对象
樂
回复 @vitou :不明白你的“element”是什么?一个对象?多个对象集合?
vitou
vitou
element用map?我做这个的功能主要是展示element中非空字段的值,而manageNodes就可以判断出哪些非空!还有element中的属性是很多的 你只能去确定一个属性的值 但是其他属性的值 怎么办?
0
JqbR001
JqbR001
//<s:set name="s" value="element.${exName}"/> 试试EL行不行

JqbR001
JqbR001
回复 @vitou : 你的意思是循环manageNode这个list 而这个list里面多个ManageNode对象,这个对象有name和exName属性对么,然后你想要通过循环得到的exName值来动态获得另一个对象Element中的和exName相关的值对吗
vitou
vitou
明显不行的啊 ,就算行的话,也没用 <s:property value="s">这个s的变量 是不能 用这个方法显示出来的
0
JustForFly
JustForFly
<s:iterator value="manageNodes" status="ap" var="mn">
   <td nowrap><s:property value="name"/>:</td><td>
	<s:set name="exn" value="%{mn.exName}"/>
	<s:property value="element[%{exn}] "/>
   </td>    
</s:iterator> 

试试这样呢
JustForFly
JustForFly
<s:set name="exn" value="%{mn.exName}"/> 改为 <s:set name="exn" value="mn.exName"/> 呢
vitou
vitou
value="%{mn.exName}"/> 这个是无效的
vitou
vitou
查看页面源码 没有element[%{exn}]出现
vitou
vitou
不行,还是显示空白的
0
JustForFly
JustForFly

我用输出的时候用JSTL写了一个,你试下

<s:iterator value="manageNodes" status="ap" var="mn">
   <td nowrap><s:property value="name"/>:</td><td>
	<s:set name="exn" value="mn.exName"/>
	${mn[exn] }
   </td>    
</s:iterator> 

JustForFly
JustForFly
如果你写死了,都没有值显示,那么你需要确认一下几点: 1.你的action中是否有属性element; 2.返回页面时,element中是否有值; 3.action中对于属性element是否有get/set方法。 我只能帮你这么多了
JustForFly
JustForFly
也就是说,你直接写死 <s:set name="s" value="element.location"> 还是没有显示出element对象中的location对应的值?
vitou
vitou
<s:set name="s" value="element.location"></s:set> <s:property value="#s"/> 这个是我试的 但是还是显示不出来 location是manageNode的exName中的值
0
小骏骏
小骏骏
换一种数据结构
返回顶部
顶部