Wicket JQuery AbstractFormDialog 不呈现枚举的 RadioChoice

Wicket JQuery AbstractFormDialog does not render RadioChoice of 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>

查看 RadioChoice 的 javadoc:它为每个选项呈现一个 <input> 标签,因此它不能单独使用 <input> 标签。

您的标记产生以下输出:

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

Wicket 没有问题,但您的浏览器肯定不会接受。

RadioChoice 在html.For 中生成'input' 个标签,因此,您不应将其分配在输入标签中,而应分配在div 中。

将您的 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>