我正在编写一个Struts2应用程序,该应用程序使用的数据库具有由YN组成的列。我需要将列显示为YesNo。所以,我在动作课上有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显示为YesNo而不是YN,这是我从数据库中获得的。我在少数网站上尝试了以下建议,但无法正常工作:

<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,但我继承了这个名称。

最佳答案

我通过以下代码将YN转换为YesNo

<s:iterator value="myTestList" var="mytestBean">
    <s:property value="%{seqIdMap[#mytestBean.name]}" />
</s:iterator>


在这里,mytestBean.name保留YN的值。

09-28 05:00