2016-11-07 14 views
1
private Map<String, Map<String, String>> data = new HashMap<String, 
Map<String, String>>(); 
private String type; 

private Map<String, String> types; 

@PostConstruct 
public void init() { 
    formSchema = new JSONObject(); 
    types = new HashMap<String, String>(); 
    types.put("name", "name"); 
    types.put("address", "address"); 
    types.put("number", "Number"); 

} 

public Map<String, Map<String, String>> getData() { 
    return data; 
} 

public String getType() { 
    return type; 
} 

public void setType(String type) { 
    this.type = type; 
} 

public Map<String, String> getTypes() { 
    return types; 
} 

Это мой код для меню DropDown.Population DropDown with JSON in Java

Я передаю значение в XHTML как-

<b:selectOneMenu id="type" value="#{dropdownView.type}" 
       style="width:150px"> 

     <f:selectItem itemLabel="Select type" itemValue="" 
        noSelectionOption="true" /> 
       <f:selectItems value="#{dropdownView.types}" /> 
      </b:selectOneMenu> 

Это работает отлично с закодированными значениями, но мне нужно, чтобы заполнить Выпадающее меню с JSON схеме.

Я просто начинающий. Кто-нибудь, пожалуйста, помогите мне относительно того, как отправлять значения Json (например, имя, адрес и номер) в раскрывающееся меню и отображать значения в Dropdown. Любая справка будет оценена. Спасибо заранее.

Отправка формата JSON в качестве примера -

{ "форма": { "имя": "а", "идентификатор": "номер", "дата": "правда", "комментарий":» largeText "}}

+0

1. Какова структура вас JSON? пожалуйста, укажите пример. 2. Как этот JSON будет доступен вашему коду (передается как параметр, загруженный откуда-то, вводимый контейнером? – kgeorgiy

ответ

0

Подумав об этом, я пришел к выводу, что BootsFaces не должен поддерживать эту функцию. Поэтому мы не будем внедрять его в BootsFaces. Это потому, что Json - невероятно гибкий формат. b:selectOneMenu поддерживает только простые списки, состоящие из пар ключ-значение. Очевидно, что существует несоответствие между гибким форматом Json и структурой данных, требуемой b:selectOneMenu. Имейте в виду: что нам делать с дополнительными полями date и comment вашего примера?

Однако вы можете преобразовать формат Json в пары ключевых значений. Простым подходом было бы реализовать такой конвертер в методе getData() вашего примера. В реальном примере вы, вероятно, используете метод кэширования, потому что getData() называется довольно часто.