2016-07-25 25 views
0

Ich habe ein Dialogfeld mit einem Formular. Das Formular enthält eine Radioauswahl, die aus einigen Aufzählungstypen besteht. Wenn der Dialog geöffnet wird, wird nur ein einzelner Kreis angezeigt. Ich erwartete drei Kreise mit den Namen der Enums. Was ist der Fehler in meinem Code?Wicket JQuery AbstractFormDialog rated nicht RadioChoice der Enumeration

public class MyNewDialog extends AbstractFormDialog { 
    public MyNewDialog(String id) { 
    super(id, "Dialog title"); 
    form = new Form("dialogForm"); 
    this.add(form); 
    RadioChoice<Gender> genders = new RadioChoice<Gender>("list", 
    getGenderList(), new EnumChoiceRenderer<Gender>(this)); 
    genders.setSuffix(" - "); 
    genders.setRequired(true); 
    form.add(genders); 
    } 
private List<Gender> getGenderList() { 
    return Arrays.asList<Gender>(Gender.values()); 
} 

//--- Enum class "Gender" 
public enum Gender { MALE, FEMALE, FAMILY }; 

//--- The html markup in file "MyNewDialog.html" 
<html xmlns:wicket="org.apache.wicket"><body><wicket:panel> 
    <form wicket:id="dialogForm"> 
    <input wicket:id="list" type="radio" /> 
    </form> 
</wicket:panel></body></html> 

Antwort

0

RadioChoice generiert 'Eingabe'-Tags im HTML. Aus diesem Grund sollten Sie es nicht in einem Eingabe-Tag, sondern in einem Bereich oder Div.

Ihre HTML-Markup-Datei ändern:

//--- The html markup in file "MyNewDialog.html" 
<html xmlns:wicket="org.apache.wicket"><body><wicket:panel> 
    <form wicket:id="dialogForm"> 
    <span wicket:id="list" type="radio" /> 
    </form> 
</wicket:panel></body></html> 
0

See RadioChoice des javadoc: es macht einen <input> Tag für jede Option, so dass es keinen <input> Tag selbst nutzen kann.

Ihre Markup-Ergebnisse in der folgenden Ausgabe:

<input> 
    <input type="radio" /> 
    <input type="radio" /> 
    <input type="radio" /> 
</input> 

Nichts problematisch für Wicket, aber sicher nicht das, was Ihr Browser akzeptiert wird.