Struts2 Загрузить ВСЕ значения в теге s: select в HashMap в классе действия - PullRequest
1 голос
/ 15 марта 2012

Я достаточно исследовал эту тему без всякой удачи: - (

Мое требование - загрузить 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 из выпадающего списка при отправке - очевидно, нет ... оцените любой ввод !!!!

1 Ответ

0 голосов
/ 22 марта 2012

Большое спасибо за ваши ответы!

Наконец-то я решил пойти с передачей скрытых переменных, и это сработало как шарм.

Кроме того, у меня были сложные типы, такие как Map>, мне пришлось написать собственный конвертер типов для преобразования в и в строку.

...