Я достаточно исследовал эту тему без всякой удачи: - (
Мое требование - загрузить HashMap, объявленный в классе действия, из формы jsp, имеющей тег: select.
Вот мой класс действий
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
<s:select
key="a.type"
label="Select Object Type"
name="a.type"
list="lstAttrTypesHashMap" />
Вот 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). Хеш-карта оказывается пустой. Есть ли что-то еще, что мне нужно сделать, чтобы загрузить этот HashMap? Насколько я понимаю, Struts2 автоматически загрузит HashMap из выпадающего списка при отправке - очевидно, нет ... оцените любой ввод !!!!