Wicket JQuery AbstractFormDialog不呈现Enumeration的RadioChoice

时间:2016-07-25 14:08:50

标签: java jquery-ui wicket

我有一个带表单的对话框。表单包含一些由一些枚举类型组成的无线电选择。对话框打开后,只显示一个圆圈。我期待三个带有枚举名称的圈子。我的代码中的错误是什么?

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>

2 个答案:

答案 0 :(得分:0)

请参阅RadioChoice的javadoc:它为每个选项呈现一个<input>标记,因此它不能单独使用<input>标记。

您的标记会产生以下输出:

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

Wicket没有任何问题,但肯定不是您的浏览器会接受的内容。

答案 1 :(得分:0)

RadioChoice生成&#39;输入&#39; html中的标签。因此,您不应在输入标签中分配它,而应在span或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>