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をドロップダウンからロードすることでした - 明らかに...入力を感謝!
S2はHTML標準に従って選択から選択した値のみを送信します。選択はHTML選択タグの最後にあります。 –
なぜHashmapが必要ですか?何かが変更されたときにドロップダウンリストの値を同じにするには、list = "lstAttrTypesHashMap"をlist = "getLstAttrTypesHashMap"に変更します。または、何か他のことをしている場合は、ハッシュマップを反復して値を隠し値に割り当てることができます。 – batbaatar
@batbaatarは隠された変数を使うとかセッション中に保存すると述べています。 –