今天在做<s:if>标签中的属性值从 ActionContext.getContext().getSession().put("WW_TRANS_I18N_LOCALE",LocaleUtils.toLocale(locale_language)); 中获取值进行判断是,判断结果总是为false。
JSP页面:
<s:if test='#session.WW_TRANS_I18N_LOCALE=="zh_TW"'>
111
</s:if>
<s:else>
222
</s:else>
判断#session.WW_TRANS_I18N_LOCALE=="zh_TW"的结果总是为false,尝试了<s:if test='#session.WW_TRANS_I18N_LOCALE=="zh_TW".toString()'>
和<s:if test='#attr.WW_TRANS_I18N_LOCALE=="zh_TW"'>均无法实现想要的结果。
在JSP页面上用 <s:property value="#session.WW_TRANS_I18N_LOCALE"/>可以得到正确的结果,可是判断就是不行。
后面使用了如下方法,解决了问题:
<% request.setAttribute("lang",ActionContext.getContext().getSession().get("WW_TRANS_I18N_LOCALE").toString()); %>
<s:if test='#request.lang=="zh_TW"'>
111
</s:if>
<s:else>
222
</s:else>
上面各种方法不能实现的原因暂时还没搞清楚,不过已经实现了自己想要的效果。
<s:if>怎么引用页面的变量进行判断?
<s:set var="tNam"><%=Constant.AD_TEMPLATE_TYPE_COMMON%></s:set>
<s:if test="adStyle eq #tNam">
<s:if test="adTemplateList.size>0">
<s:iterator value="adTemplateList" id="adTemplate" status="c">
<td style="text-align: center">
<div>
<a target="navTab" title="普通广告新增" class="tmpSelect"
rel="toAddCommon"
href="ad/adPackage!toAddCommon.do?adPackage.adTemplateId=<s:property value='#adTemplate.adTemplateId'/> && adStyle=<s:property value='adStyle'/>">
<img id='tempList<s:property value="#c.index+1"/>'
src="<s:property value='#adTemplate.adTemplatePath'/>"
style="height: 254px; 171px;" /> <br> <span><s:property
value="#adTemplate.adTemplateName" /></span>
</a>
</div>
</td>
</s:iterator>
</s:if>
</s:if>