Отображение данных HashMap на странице JSF

Я изо всех сил пытаюсь отображать содержимое хэш-карты в таких виджетах, как inputtext, selectonemenu и т.д.

Я определил hasmaps

  private Map<String, String> subIdMap = new HashMap<String, String>();
  private Map<String, Map<String, String>> dataMap = new HashMap<String, Map<String, String>>();

// их геттеры и сеттеры.

SubIdMap содержит ключи и значения

для идентификатора 001

private Map<String, String> subIdMap = new HashMap<String, String>();
subIdMap.put("id", "001");
subIdMap.put("name", "Alexender");
subIdMap.put("age", "24");
subIdMap.put("sex", "Male");
subIdMap.put("country", "Greece");

для идентификатора = 002

private Map<String, String> subIdMap = new HashMap<String, String>();

subIdMap.put("id", "002");
subIdMap.put("name", "John");
subIdMap.put("age", "25");
subIdMap.put("sex", "Male");
subIdMap.put("country", "US");

dataMap - это карта, которая имеет идентификаторы в качестве ключей и subIdMap в качестве их значений.

 private Map<String, Map<String, String>> dataMap = new HashMap<String, Map<String, String>>();

dataMap.put("001", subIdMap);
or
dataMap.put("002", subIdMap);

У меня есть страница, на которой, если пользователь щелкнет идентификатор 001, он получит данные для идентификатора = 001 или для идентификатора = 002 из bean-компонента и отобразит их на странице xhtml и . я не могу показать данные с карты в полях на странице xhtml

фрагмент

  @ManagedBean(name = "sampleBean")
    @ViewScoped
    public class SampleBean implements Serializable{

    private Map<String, String> subIdMap = new HashMap<String, String>();
     private Map<String, Map<String, String>> dataMap = new HashMap<String, Map<String, String>>();

public SampleBean() {

subIdMap.put("id", "001");
subIdMap.put("name", "Alexender");
subIdMap.put("age", "24");
subIdMap.put("sex", "Male");
subIdMap.put("country", "Greece");

dataMap.put("001",subIdMap);

    }


    /**
         * @return the subIdMap
         */
        public Map<String, String> getSubIdMap() {
            return subIdMap;
        }

        /**
         * @param subIdMap the subIdMap to set
         */
        public void setSubIdMap(Map<String, String> subIdMap) {
            this.subIdMap = subIdMap;
        }

    /**
         * @return the dataMap
         */
        public Map<String, Map<String, String>> getDataMap() {
            return dataMap;
        }

        /**
         * @param dataMap the dataMap to set
         */
        public void setDataMap(Map<String, Map<String, String>> dataMap) {
            this.dataMap = dataMap;
        }

    }

xhtml-страница

<p:inputText id="textId" value="............." />

<p:selectOneMenu id="selectId" value="................" />  

Мне нужны некоторые указания здесь.


person S Jagdeesh    schedule 01.11.2012    source источник
comment
обратитесь к этому, это может помочь вам primefaces.org/showcase-labs/ui/pprSelect. jsf   -  person Swarne27    schedule 02.11.2012


Ответы (2)


Чтобы решить вашу проблему, добавьте метод get в свой bean-компонент, чтобы получить KeySet с карты, например

 public List getKeyList() {
        return new ArrayList(dataMap.keySet());
 }

Затем поместите повторный тег на страницу jsf для итерации и отображения ключей.

<ui:repeat value="#{newJSFManagedBean.keyList}" var="key">
            Key : <h:outputText value="#{key}"/>
</ui:repeat>

Но вместо использования карты внутри карты я бы предложил создать простой класс с именем Person и хранить там значения, а затем просто использовать карту, например

private Map<String, Person> dataMap = new HashMap();

Надеюсь, вы сможете продолжить.

person vels4j    schedule 02.11.2012
comment
Просто не пользуйтесь картами вообще. Учебное пособие по DAO — уровень данных - person Akos K; 02.11.2012
comment
Конечно, он может. Есть куча постов с такими решениями. Я имел в виду, что он не должен использовать Карты для таких целей, как поиск сущностей. Я думаю, что это неправильный путь, и, возможно, вам следует упомянуть об этом в своем посте, как это сделал kolossus ниже. Карта карты для сущностей... - person Akos K; 02.11.2012
comment
как напечатать одновременно значение и ключ @vels4j - person Divyesh Kanzariya; 19.07.2016

Вы можете избежать наказания за это в обычном el, как в

  value = "#{yourBean.map.firstKey.nestedKey}"

Но я должен сказать, что ваш дизайн не рекомендуется. Вообще. Карта карты для каждой сущности? Ваша работа будет намного проще, если вы просто инкапсулируете все эти данные в один класс.

person kolossus    schedule 02.11.2012