2013-08-21 36 views
2

我的代码:Struts2的S:复选框 - 不需要输入型隐藏

<label class="btn btn-default"> 
    <s:checkbox name="viewTypeDescr" />&#32; 
    <s:text name="name.contentType" /> 
</label> 

文档:http://struts.apache.org/release/2.3.x/docs/checkbox.html 说,它将呈现一个input[type=checkbox]

而是这里就是我得到:

<label class="btn btn-default"> 
    <input type="checkbox" name="viewTypeDescr" value="true" id="search_viewTypeDescr"> 
    <input type="hidden" id="__checkbox_search_viewTypeDescr" name="__checkbox_viewTypeDescr" value="true"> 
    Content Type 
</label> 

添加input[type="hidden"]会导致生成的页面无效,因为标签中可能有最多1个输入。无效的

定义:

  1. 转到validator.w3.org来
  2. “通过直接输入验证”
  3. 装饰它提供的HTML代码粘贴缺少<html><head><title>foo</title></head><body></body></html>以减少假错误
  4. 选择HTML5广告DOCTYPE
  5. 点击 “验证”
  6. 得到这个错误:“L ine xyz,Column abc:标签元素最多可以包含一个输入,按钮,select,textarea或keygen后代。“
  7. 为了以防万一:“标题可以与特定的表单控件(称为标签元素的标签控件)相关联,可以使用for属性,也可以将表单控件放入标签元素本身。”
  8. 发现:“如果未指定for属性,但标签元素具有可标记的元素后代,则第一个树状顺序的后代是标签元素的标签控件。”
  9. 添加一个隐藏的不能有“http://www.w3.org/html/wg/drafts/html/master/forms.html#category-label

无论如何,当您提交文件QA进行验证,他们使用validator.w3.org,这是最重要的。

隐藏的原因是什么?我怎么能摆脱它或将它移动到其他地方?

+0

你确定有一个隐藏的领域? –

+0

你如何检查你的HTML的有效性?你在哪里发现该标签只能有一个输入? '每个LABEL元素只与一个表单控件相关联.''相关'不是''可以''。 –

+0

更新为“验证”信息 – Trumbitta

回答

0

我创建了一个新的主题,parent = simple,并将使用它。

还是不知道这个隐藏的目的是什么...

+1

目的:http://struts.apache.org/development/2.x/docs/checkbox-interceptor.html。 –

+2

目的很明确:为未选中的复选框提交一个值。这是一种常见的模式。 –

+0

同意。但它应该是可选的,并选择加入。 – Trumbitta