2016-11-07 2 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; 
} 

Dies ist mein Code für DropDown-Menü.DropDown mit JSON in Java befüllen

ich die Werte in xhtml bin vorbei as-

<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> 

Dies wird mit fest codierten Werten arbeitet gut, aber ich brauche das Dropdown-Menü mit JSON Schema zu füllen.

Ich bin nur ein Anfänger.Kann mir bitte helfen, wie JSON Werte (zum Beispiel, Name, Adresse und Nummer) zu Dropdown-Menü zu senden und zeigen Sie die Werte in Dropdown.Any Hilfe wäre willkommen. Vielen Dank im Voraus.

Senden json-Format als Beispiel -

{ "Form": { "name": "abc", "id": "Zahl", "Datum": "true", "Kommentar":“ largeText "}}

+0

1. Was ist die Struktur von Ihnen JSON? Bitte geben Sie ein Beispiel an. 2. Wie wird dieser JSON für Ihren Code verfügbar sein (als Parameter übergeben, von irgendwo geladen, vom Container injiziert? – kgeorgiy

Antwort

0

Nachdem ich darüber nachgedacht hatte, kam ich zu dem Schluss, dass BootsFaces diese Funktion nicht unterstützen sollte. Deshalb werden wir es nicht in BootsFaces implementieren. Das liegt daran, dass Json ein unglaublich flexibles Format ist. b:selectOneMenu unterstützt nur einfache Listen, die aus Schlüssel/Wert-Paaren bestehen. Offensichtlich besteht eine Diskrepanz zwischen dem flexiblen Json-Format und der von b:selectOneMenu geforderten Datenstruktur. Wohlgemerkt: Was sollen wir mit den zusätzlichen Feldern date und comment Ihres Beispiels machen?

Sie können jedoch das Json-Format selbst in die Schlüssel/Wert-Paare umwandeln. Ein einfacher Ansatz wäre, einen solchen Konverter in der getData() Methode Ihres Beispiels zu implementieren. In einem realen Beispiel würden Sie wahrscheinlich einen Caching-Ansatz verwenden, weil getData() ziemlich oft aufgerufen wird.