2012-03-15 4 views
1

アクションクラスではHashMapへのselectタグStruts2の負荷としてのすべての値:私は、このトピックのsansに十分に研究している

私の要件は、アクションクラスで宣言されたHashMapをロードすることです:-(任意の運ここで

は、ここに私のアクションクラス

public class AttributeAction extends ActionSupport { 
    private HashMap<String, String> lstAttrTypesHashMap; 
    public void setLstAttrTypesHashMap(HashMap<String, String> lstAttrTypesHashMap) { 
     this.lstAttrTypesHashMap = lstAttrTypesHashMap; 
    } 

    public HashMap<String, String> getLstAttrTypesHashMap() { 
     return lstAttrTypesHashMap; 
    } 

    public String renderPageAction() { 
     lstAttrTypesHashMap.put("ENTRY1", "VALUE1"); 
     lstAttrTypesHashMap.put("ENTRY2", "VALUE2"); 
     lstAttrTypesHashMap.put("ENTRY3", "VALUE3"); 
     return SUCCESS; 
    } 

    public String searchAction() { 
     logger.info("***************************************"); 
     logger.info("searchAction Started ..."); 
     logger.info("a.getType() = [" + a.getType() + "]"); 
     logger.info("getLstAttrTypesHashMap() = [" + getLstAttrTypesHashMap() + "]"); 
     return SUCCESS; 
    } 
} 

である私は、JSPにドロップダウンを表示する方法であるselectタグ

<s:select 
    key="a.type" 
    label="Select Object Type" 
    name="a.type" 
    list="lstAttrTypesHashMap" /> 
:として持つJSPフォームから。ここで

struts.xml

<action name="attributeSearch" method="searchAction" class="com.frk.gid.action.AttributeAction"> 
    <result name="success">/AttributeResult.jsp</result> 
    <result name="input">/AttributeInput.jsp</result> 
</action> 
    <action name="attributeRender" method="renderPageAction" class="com.frk.gid.action.AttributeAction"> 
    <result name="success">/AttributeInput.jsp</result> 
</action> 

上記のJSPがロードされ、私は、ドロップダウンが人口罰金であることがわかります。しかし、私はそれをアクションに戻すと、の選択値(a.type)しか見ることができません。ハッシュマップはnullになります。このHashMapをロードするために何か必要なことはありますか?私の理解は、Struts2が自動的にHashMapをドロップダウンからロードすることでした - 明らかに...入力を感謝!

+0

S2はHTML標準に従って選択から選択した値のみを送信します。選択はHTML選択タグの最後にあります。 –

+0

なぜHashmapが必要ですか?何かが変更されたときにドロップダウンリストの値を同じにするには、list = "lstAttrTypesHashMap"をlist = "getLstAttrTypesHashMap"に変更します。または、何か他のことをしている場合は、ハッシュマップを反復して値を隠し値に割り当てることができます。 – batbaatar

+1

@batbaatarは隠された変数を使うとかセッション中に保存すると述べています。 –

答えて

0

ありがとうございました。

最後に、隠し変数を渡すことにしました。これは魅力的に機能しました。

また、私はMap>のような複雑な型を持っていましたが、私は自分自身の型変換器を記述してStringからStringに変換しなければなりませんでした。

関連する問題