我正在编写一个Struts2应用程序,该应用程序使用的数据库具有由Y
或N
组成的列。我需要将列显示为Yes
或No
。所以,我在动作课上有seqIdMap
:
private HashMap<String, String> seqIdMap;
public ReviewQuestionAction(){
seqIdMap = new HashMap<String, String>();
seqIdMap.put("Y", " Yes ");
seqIdMap.put("N", " No ");
}
我使用下面的Struts2代码生成单选标签,并且工作正常:
<div class="row">
<label for="yesOrNo" class="pull-right">
<s:text name="yesOrNo"></s:text>
</label>
</div>
<div>
<s:radio name="indicatiorFlag" id="yesOrNo" list="seqIdMap" />
</div>
我的问题是,我需要将
indicatiorFlag
显示为Yes
或No
而不是Y
或N
,这是我从数据库中获得的。我在少数网站上尝试了以下建议,但无法正常工作:<s:iterator value="questionInfoList">
<s:url var="link" action="reviewQuestion" method="getQuestionInfo">
<s:param name="seqId">
<s:property value="seqId"/>
</s:param>
</s:url>
<s:a href="%{link}">
<s:property value = "seqId"/></s:a>
<s:property value = "%{seqIdMap.indicatiorFlag}"/>
如果将
Y
替换为N
,则可以显示%{seqIdMap.indicatiorFlag}
或indicatiorFlag
。但是我还没有弄清楚如何在indicatiorFlag
中对key
使用seqIdMap
。我尝试了几种不同的方法,包括%{seqIdMap['indicatiorFlag']}
和<s:set name="newMap" var = "seqIdMap">
在迭代器之外,然后在其中
%{#newMap[indicatiorFlag]}
。任何帮助,将不胜感激。附言我意识到
indicatiorFlag
应该是indicatorFlag
,但我继承了这个名称。 最佳答案
我通过以下代码将Y
和N
转换为Yes
和No
:
<s:iterator value="myTestList" var="mytestBean">
<s:property value="%{seqIdMap[#mytestBean.name]}" />
</s:iterator>
在这里,
mytestBean.name
保留Y
和N
的值。