Java (不必要的)Wicket形式的标记

Java (不必要的)Wicket形式的标记,java,wicket,Java,Wicket,在使用Wicket(7.5.0版)生成一个简单的表单页面时,我得到了额外的标记,这似乎是不必要的(一个隐藏字段放置在带有内联CSS的中): 我是Wicket的新手,这可能从代码中可以看出。有没有办法避免生成上述看似不必要的标记?换句话说,我是遗漏了什么,还是应该报告一个bug 此隐藏的输入用于提交带有锚定组件(如SubmitLink)的表单 例如,您有一个表单,您希望有两种提交方式(使用两个不同的按钮): 表单=新表单(“表单”){ @凌驾 受保护的void onSubmit(){ //中央表格

在使用Wicket(7.5.0版)生成一个简单的表单页面时,我得到了额外的标记,这似乎是不必要的(一个隐藏字段放置在带有内联CSS的
中):


我是Wicket的新手,这可能从代码中可以看出。有没有办法避免生成上述看似不必要的标记?换句话说,我是遗漏了什么,还是应该报告一个bug

此隐藏的
输入
用于提交带有锚定组件(如
SubmitLink
)的表单

例如,您有一个
表单
,您希望有两种提交方式(使用两个不同的按钮):

表单=新表单(“表单”){
@凌驾
受保护的void onSubmit(){
//中央表格提交
}
};
SubmitLink submitter1=新的SubmitLink(“submitter1”){
@凌驾
提交时公共无效(){
System.out.println(“被调用的提交者1”);
}
};
增加表格(提交人1);
SubmitLink Submiter2=新的SubmitLink(“Submiter2”){
@凌驾
提交时公共无效(){
System.out.println(“被调用的提交者2”);
}
};
增加表格(提交人2);

当您单击两个提交者中的任何一个时,其名称将被放入该输入中,Wicket将找到正确的
SubmitLink
组件,并调用其
onSubmit()
此隐藏的
输入
用于提交带有锚定组件的表单,如
SubmitLink

例如,您有一个
表单
,您希望有两种提交方式(使用两个不同的按钮):

表单=新表单(“表单”){
@凌驾
受保护的void onSubmit(){
//中央表格提交
}
};
SubmitLink submitter1=新的SubmitLink(“submitter1”){
@凌驾
提交时公共无效(){
System.out.println(“被调用的提交者1”);
}
};
增加表格(提交人1);
SubmitLink Submiter2=新的SubmitLink(“Submiter2”){
@凌驾
提交时公共无效(){
System.out.println(“被调用的提交者2”);
}
};
增加表格(提交人2);

当您单击两个提交者中的任何一个时,其名称将被输入到该输入中,Wicket将找到正确的
SubmitLink
组件并调用其
onSubmit()

,恕我直言,这并不能回答问题。即“围绕此隐藏字段生成的具有内联样式的标记对是什么”。乍一看,装饰一些不可见的东西是没有意义的:)。正如rpuch所解释的,Wicket内部需要隐藏字段来提交特殊表单。因为它不应该对用户可见,Wicket将其装饰为尽可能的“不可见”。badbishop,我相信你的问题是关于输入的,而不是它的装饰。我仍然相信你的问题可能是这样理解的:)至于装修风格,我不知道确切情况,但我同意斯文梅尔的看法。也许,这只是一种预防措施,或者在某些浏览器版本中,由于一个bug,一个隐藏的
输入实际上可能是可见的。该样式的代码是
形式的
类(Wicket 6中的第一个声明),因此这不是Wicket中的bug,而是有意识地进行的。我想补充的是,这个隐藏的输入实际上并不隐藏,隐藏的是div包装,这意味着屏幕阅读器会发现该输入使得任何使用SubmitLink的页面都不符合WCAG。恕我直言,这并不能回答问题。即“围绕此隐藏字段生成的具有内联样式的标记对是什么”。乍一看,装饰一些不可见的东西是没有意义的:)。正如rpuch所解释的,Wicket内部需要隐藏字段来提交特殊表单。因为它不应该对用户可见,Wicket将其装饰为尽可能的“不可见”。badbishop,我相信你的问题是关于输入的,而不是它的装饰。我仍然相信你的问题可能是这样理解的:)至于装修风格,我不知道确切情况,但我同意斯文梅尔的看法。也许,这只是一种预防措施,或者在某些浏览器版本中,由于一个bug,一个隐藏的
输入实际上可能是可见的。该样式的代码是
形式的
类(Wicket 6中的第一个声明),因此这不是Wicket中的bug,而是有意识地进行的。我想补充的是,这个隐藏的输入实际上并不隐藏,隐藏的是div包装,这意味着屏幕阅读器将发现该输入使得任何使用SubmitLink的页面都不符合WCAG。
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
  <head>
    <meta charset="utf-8" />
    <title>Apache Wicket Quickstart</title>
    <link href='http://fonts.googleapis.com/css?family=Yanone+Kaffeesatz:regular,bold' rel='stylesheet' type='text/css' />
    <link rel="stylesheet" href="mystyle.css" type="text/css" media="screen" title="Stylesheet"/>
  </head>
  <body>
    <form method="post" wicket:id="ItemForm" id="ItemForm1" action="./tf?1-1.IFormSubmitListener-ItemForm">
      <div style="width:0px;height:0px;position:absolute;left:-100px;top:-100px;overflow:hidden">
        <input type="hidden" name="ItemForm1_hf_0" id="ItemForm1_hf_0" />
      </div>
      <p>
        <label for="name">
          <span>Item name:</span>
        </label>
        <input type="text" name="p::name" wicket:id="name" value="">
      </p>
      <p>
        <label for="price">
          <span>Item price:</span>
        </label>
        <input type="text" name="price" wicket:id="price" value="0">
      </p>
      <section>
        <input type="submit" value="Submit">
      </section>
    </form>
  </body>
</html>
// Package name and imports omitted    
public final class ItemFormPage extends WebPage {

      @EJB(name = "ejb/item")
      Item it;

      public ItemFormPage() {
        Form f = new Form("ItemForm") {
          @Override
          public void onSubmit() {
            setResponsePage(new ItemDisplay());
          }
        };

        f.setDefaultModel(new CompoundPropertyModel(it));
        f.add(new TextField("name"));
        f.add(new TextField("price"));
        add(f);
      }
    }
Form<Void> form = new Form<Void>("form") {
    @Override
    protected void onSubmit() {
        // central form onSubmit
    }
};

SubmitLink submitter1 = new SubmitLink("submitter1") {
    @Override
    public void onSubmit() {
        System.out.println("submitter 1 called");
    }
};
form.add(submitter1);

SubmitLink submitter2 = new SubmitLink("submitter2") {
    @Override
    public void onSubmit() {
        System.out.println("submitter 2 called");
    }
};
form.add(submitter2);