Wicket JQuery AbstractFormDialog不渲染枚举的RadioChoice

问题描述:

我有一个窗体对话框。该表单包含一个由一些枚举类型组成的无线电选择。当对话框打开时,只显示一个圆圈。我预计三个圆圈的枚举名称。我的代码中有什么错误?Wicket JQuery AbstractFormDialog不渲染枚举的RadioChoice

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> 

RadioChoice在html中生成'输入'标记。因此,您不应该在输入标记中分配它,而应该在一个跨度或分隔中。

你的HTML标记的文件更改为:

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

见RadioChoice的Javadoc:它使得每个选项一个<input>标签,因此不能单独使用<input>标签。

您的标记结果如下输出:

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

没有什么问题的,检票,但肯定不是你的浏览器会接受。