struts2的s:set和s:if的问题

[size=large]关于struts2里面s:set 和s:if的问题,[/size]
<s:set name="seasonList" value="{'Spring',Summer,'Autumn','Winter'}" />

[size=large]这么是正确的,但是我们set一个map,这样就不行了:[/size]

<s:set name="monthMap" value='#{"1":"Jan","2":"Feb","3":"Mar","4":"Apr","5":"May",
"6":"Jun","7":"Jul","8":"Aug","9":"Sep","10":"Oct","11":"Nov","12":"Dec"}' />

[size=large]奇怪的是,前面必须要加一个#,感觉很奇怪,我也不知道为什么,希望研究过源码的给一个解答。[/size]
<span class="s">
<s:set name="monthMap" value="#{'1':'Jan','2':'Feb','3':'Mar','4':'Apr','5':'May','6':'Jun','7':'Jul','8':'Aug','9':'Sep','10':'Oct','11':'Nov','12':'Dec'}" />
<s:set name="currentMonth" value="%{ chargeMonth }" />
<select name="chargeMonth" class="styled">
<option value=" ">-- Select Month --</option>
<s:iterator value="#monthMap" id="month">
<option value="<s:property value='key'/>"
<s:if test="%{key==#currentMonth}">
selected="selected"
</s:if>
>
<s:property value='value'/>
</option>
</s:iterator>
</select>

[size=large]发现这样不行,后来经过我反复的测试,当选择10,11,12时候能正确的将selected加上,但是选择前面的数字怎么都不行,后来经我观察,前面我将字符串用的是’,估计在后台反射的时候将其类型错误的转化成char类型了,但是估计当判断length大于1的时候,将其转化成字符串了,所以能够正确。不知道我这么猜的对不对,贴出来分享一下吧,以后希望这样的问题不能在犯了。
我修改为下面的就可以了:[/size]

<s:set name="monthMap" value='#{"1":"Jan","2":"Feb","3":"Mar","4":"Apr","5":"May","6":"Jun","7":"Jul","8":"Aug","9":"Sep","10":"Oct","11":"Nov","12":"Dec"}' />
<s:set name="currentMonth" value="%{chargeMonth}" />
<select name="chargeMonth" class="styled">
<option value=" ">-- Select Expiration Month --</option>
<s:iterator value="#monthMap" id="month">
<option value="<s:property value='key'/>"
<s:if test="%{key==#currentMonth}">
selected="selected"
</s:if>
>
<s:property value='value'/>
</option>
</s:iterator>
</select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值