So erstellen Sie dynamische JSF-Formularfelder

Ich habe einige ähnliche Fragen wie @ gefundDie One, aber es gibt so viele Möglichkeiten, wie das gemacht werden kann, dass es mich verwirrter gemacht hat.

Wir bekommen einXML Datei, die wir gerade lesen. DiesXML enthält Informationen zu einigen Formularfeldern, die angezeigt werden müssen.

So habe ich diese benutzerdefinierte @ erstelDynamicField.java das hat alle Informationen, die wir brauchen:

public class DynamicField {
  private String label; // label of the field
  private String fieldKey; // some key to identify the field
  private String fieldValue; // the value of field
  private String type; // can be input,radio,selectbox etc

  // Getters + setters.
}

So haben wir einList<DynamicField>.

Ich möchte diese Liste durchlaufen und die Formularfelder ausfüllen, damit sie ungefähr so aussehen:

<h:dataTable value="#{dynamicFields}" var="field">
    <my:someCustomComponent value="#{field}" />
</h:dataTable>

Das<my:someCustomComponent> würde dann die entsprechenden JSF-Formularkomponenten zurückgeben (d. h. label, inputText)

Ein anderer Ansatz wäre, nur das @ anzuzeig<my:someCustomComponent> und dann würde das ein @ zurückgebHtmlDataTable mit Formularelementen. (Ich denke, das ist vielleicht einfacher zu machen).

Welcher Ansatz ist am besten? Kann mir jemand Links oder Code zeigen, wo gezeigt wird, wie ich das erstellen kann? Ich bevorzuge vollständige Codebeispiele und keine Antworten wie "Sie benötigen eine Unterklasse vonjavax.faces.component.UIComponent ".

Antworten auf die Frage(4)

Ihre Antwort auf die Frage