需要从Struts2迭代器内部访问我的动作类中的HashMap

时间:2015-10-11 02:44:57

标签: java struts2

我正在编写一个使用数据库的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中使用keyseqIdMap。我尝试了几种不同的方式,包括%{seqIdMap['indicatiorFlag']}

<s:set name="newMap" var = "seqIdMap">

在迭代器之外,然后在其中%{#newMap[indicatiorFlag]}。任何帮助,将不胜感激。

P.S。我意识到indicatiorFlag应该是indicatorFlag,但我继承了这个名字。

2 个答案:

答案 0 :(得分:1)

我通过以下代码将var Member = mongoose.Schema({ webaccount : { email : String, password : String, }, facebook : { id : String, token : String, email : String, name : String } }); Y转换为NYes

No

此处,<s:iterator value="myTestList" var="mytestBean"> <s:property value="%{seqIdMap[#mytestBean.name]}" /> </s:iterator> 保留了mytestBean.nameY的值。

答案 1 :(得分:0)

我以为我曾尝试过以下代码并且它没有用,但在查看了James的解决方案之后我尝试了它并且它也有效。

<s:property value = "%{seqIdMap[indicatiorFlag]}"/>